コード例 #1
0
        private static void ValidateYearlyRetention(AzureBackupYearlyRetentionPolicy yearlyRetention)
        {
            if (yearlyRetention.Retention < MinRetention || yearlyRetention.Retention > MaxRetentionInYears)
            {
                var exception = new ArgumentException(string.Format(Resources.YearlyRetentionPolicyValueException, MinRetention, MaxRetentionInYears));
                throw exception;
            }

            if (yearlyRetention.MonthsOfYear == null || yearlyRetention.MonthsOfYear.Count == 0)
            {
                var exception = new ArgumentException(Resources.YearlyRetentionPolicyMonthOfYearParamException);
                throw exception;
            }

            if (yearlyRetention.RetentionFormat == RetentionFormat.Daily)
            {
                if (yearlyRetention.DaysOfMonth == null || yearlyRetention.DaysOfMonth.Count == 0)
                {
                    var exception = new ArgumentException(Resources.YearlyRetentionPolicyDaysOfMonthParamException);
                    throw exception;
                }

                if (yearlyRetention.DaysOfWeek != null || yearlyRetention.WeekNumber != null)
                {
                    var exception = new ArgumentException(Resources.YearlyRetentionPolicyDaysOfWeekParamException);
                    throw exception;
                }
            }

            if (yearlyRetention.RetentionFormat == RetentionFormat.Weekly)
            {
                if (yearlyRetention.DaysOfWeek == null || yearlyRetention.DaysOfWeek.Count == 0)
                {
                    var exception = new ArgumentException(Resources.YearlyRetentionPolicyDaysOfWeekInWeeksFormatParamException);
                    throw exception;
                }

                if (yearlyRetention.WeekNumber == null || yearlyRetention.WeekNumber.Count == 0)
                {
                    var exception = new ArgumentException(Resources.YearlyRetentionPolicyWeekNumParamException);
                    throw exception;
                }

                if (yearlyRetention.DaysOfMonth != null)
                {
                    var exception = new ArgumentException(Resources.YearlyRetentionPolicyDaysOfMonthInWeekFormatException);
                    throw exception;
                }
            }
        }
        public override void ExecuteCmdlet()
        {
            ExecutionBlock(() =>
            {
                base.ExecuteCmdlet();
                if (DailyRetention != false)
                {
                    AzureRMBackupRetentionPolicy retentionPolicy = new AzureBackupDailyRetentionPolicy(RetentionType.Daily.ToString(), Retention);
                    ProtectionPolicyHelpers.ValidateRetentionPolicy(new List <AzureRMBackupRetentionPolicy> {
                        retentionPolicy
                    });
                    WriteObject(retentionPolicy);
                }

                if (WeeklyRetention != false)
                {
                    List <DayOfWeek> daysofWeekList = ConvertDaysOfWeek(DaysOfWeek);
                    AzureRMBackupRetentionPolicy retentionPolicy = new AzureBackupWeeklyRetentionPolicy(RetentionType.Weekly.ToString(), Retention, daysofWeekList);
                    ProtectionPolicyHelpers.ValidateRetentionPolicy(new List <AzureRMBackupRetentionPolicy> {
                        retentionPolicy
                    });
                    WriteObject(retentionPolicy);
                }

                if (MonthlyRetentionInDailyFormat != false)
                {
                    AzureRMBackupRetentionPolicy retentionPolicy = new AzureBackupMonthlyRetentionPolicy(RetentionType.Monthly.ToString(), Retention, RetentionFormat.Daily, DaysOfMonth,
                                                                                                         null, null);
                    ProtectionPolicyHelpers.ValidateRetentionPolicy(new List <AzureRMBackupRetentionPolicy> {
                        retentionPolicy
                    });
                    WriteObject(retentionPolicy);
                }

                if (MonthlyRetentionInWeeklyFormat != false)
                {
                    List <DayOfWeek> daysofWeekList = ConvertDaysOfWeek(DaysOfWeek);
                    List <WeekNumber> weekNumbers   = ConvertWeekNumbers(WeekNumber);
                    AzureRMBackupRetentionPolicy retentionPolicy = new AzureBackupMonthlyRetentionPolicy(RetentionType.Monthly.ToString(), Retention, RetentionFormat.Weekly, DaysOfMonth,
                                                                                                         weekNumbers, daysofWeekList);

                    ProtectionPolicyHelpers.ValidateRetentionPolicy(new List <AzureRMBackupRetentionPolicy> {
                        retentionPolicy
                    });

                    WriteObject(retentionPolicy);
                }

                if (YearlyRetentionInDailyFormat != false)
                {
                    List <Month> monthsOfYear = ConvertMonthsOfYear(MonthsOfYear);
                    AzureRMBackupRetentionPolicy retentionPolicy = new AzureBackupYearlyRetentionPolicy(RetentionType.Yearly.ToString(), Retention, monthsOfYear, RetentionFormat.Daily,
                                                                                                        DaysOfMonth, null, null);

                    ProtectionPolicyHelpers.ValidateRetentionPolicy(new List <AzureRMBackupRetentionPolicy> {
                        retentionPolicy
                    });

                    WriteObject(retentionPolicy);
                }

                if (YearlyRetentionInWeeklyFormat != false)
                {
                    List <DayOfWeek> daysofWeekList = ConvertDaysOfWeek(DaysOfWeek);
                    List <WeekNumber> weekNumbers   = ConvertWeekNumbers(WeekNumber);
                    List <Month> monthsOfYear       = ConvertMonthsOfYear(MonthsOfYear);
                    AzureRMBackupRetentionPolicy retentionPolicy = new AzureBackupYearlyRetentionPolicy(RetentionType.Yearly.ToString(), Retention, monthsOfYear,
                                                                                                        RetentionFormat.Weekly, DaysOfMonth, weekNumbers, daysofWeekList);

                    ProtectionPolicyHelpers.ValidateRetentionPolicy(new List <AzureRMBackupRetentionPolicy> {
                        retentionPolicy
                    });

                    WriteObject(retentionPolicy);
                }
            });
        }