コード例 #1
0
        private CSMBackupSchedule GetBackupSchedule()
        {
            var backupSchedule  = new CSMBackupSchedule();
            var scheduleRunTime = ConfigurationManager.AppSettings["ScheduleRunTime"];

            backupSchedule.BackupType       = ConfigurationManager.AppSettings["BackupType"];
            backupSchedule.ScheduleRun      = ConfigurationManager.AppSettings["ScheduleType"];
            backupSchedule.ScheduleRunTimes = new List <DateTime> {
                DateTime.Parse(scheduleRunTime)
            };
            return(backupSchedule);
        }
コード例 #2
0
        public static CSMBackupSchedule FillCSMBackupSchedule(string scheduleType, DateTime scheduleStartTime,
                                                              string[] scheduleRunDays)
        {
            var backupSchedule = new CSMBackupSchedule();

            backupSchedule.BackupType = BackupType.Full.ToString();

            scheduleType = FillScheduleType(scheduleType, scheduleRunDays);
            backupSchedule.ScheduleRun = scheduleType;

            if (string.Compare(scheduleType, ScheduleType.Weekly.ToString(), true) == 0)
            {
                backupSchedule.ScheduleRunDays = ParseScheduleRunDays(scheduleRunDays);
            }

            DateTime scheduleRunTime = ParseScheduleRunTime(scheduleStartTime);

            backupSchedule.ScheduleRunTimes = new List <DateTime> {
                scheduleRunTime
            };

            return(backupSchedule);
        }
コード例 #3
0
        public static void ValidateRetentionPolicy(IList <AzureRMBackupRetentionPolicy> retentionPolicyList, CSMBackupSchedule backupSchedule = null)
        {
            bool validateDailyRetention      = false;
            bool validateWeeklyRetention     = false;
            int  dailyRetentionPolicyCount   = 0;
            int  weeklyRetentionPolicyCount  = 0;
            int  monthlyRetentionPolicyCount = 0;
            int  yearlyRetentionPolicyCount  = 0;

            if (retentionPolicyList.Count == 0)
            {
                var exception = new ArgumentException(Resources.RetentionPolicyCountException);
                throw exception;
            }

            foreach (AzureRMBackupRetentionPolicy retentionPolicy in retentionPolicyList)
            {
                if (retentionPolicy.RetentionType == RetentionType.Daily.ToString())
                {
                    ValidateDailyRetention((AzureBackupDailyRetentionPolicy)retentionPolicy);
                    validateDailyRetention    = true;
                    dailyRetentionPolicyCount = dailyRetentionPolicyCount + 1;
                }
                else if (retentionPolicy.RetentionType == RetentionType.Weekly.ToString())
                {
                    ValidateWeeklyRetention((AzureBackupWeeklyRetentionPolicy)retentionPolicy);
                    validateWeeklyRetention = true;
                    if (backupSchedule != null)
                    {
                        var weeklyRetention = (AzureBackupWeeklyRetentionPolicy)retentionPolicy;
                        ValidateForWeeklyBackupScheduleDaysOfWeek(backupSchedule.ScheduleRun, backupSchedule.ScheduleRunDays, weeklyRetention.DaysOfWeek);
                    }
                    weeklyRetentionPolicyCount = weeklyRetentionPolicyCount + 1;
                }
                else if (retentionPolicy.RetentionType == RetentionType.Monthly.ToString())
                {
                    ValidateMonthlyRetention((AzureBackupMonthlyRetentionPolicy)retentionPolicy);
                    if (backupSchedule != null)
                    {
                        var monthlyRetention = (AzureBackupMonthlyRetentionPolicy)retentionPolicy;
                        ValidateForWeeklyBackupSchedule(monthlyRetention.RetentionFormat, backupSchedule.ScheduleRun, backupSchedule.ScheduleRunDays, monthlyRetention.DaysOfWeek);
                    }
                    monthlyRetentionPolicyCount = monthlyRetentionPolicyCount + 1;
                }
                else if (retentionPolicy.RetentionType == RetentionType.Yearly.ToString())
                {
                    ValidateYearlyRetention((AzureBackupYearlyRetentionPolicy)retentionPolicy);
                    if (backupSchedule != null)
                    {
                        var yearlyRetention = (AzureBackupYearlyRetentionPolicy)retentionPolicy;
                        ValidateForWeeklyBackupSchedule(yearlyRetention.RetentionFormat, backupSchedule.ScheduleRun, backupSchedule.ScheduleRunDays, yearlyRetention.DaysOfWeek);
                    }
                    yearlyRetentionPolicyCount = yearlyRetentionPolicyCount + 1;
                }
            }

            ValidateRetentionPolicyCount(dailyRetentionPolicyCount, weeklyRetentionPolicyCount, monthlyRetentionPolicyCount,
                                         yearlyRetentionPolicyCount);

            if (backupSchedule != null)
            {
                string scheduleType = backupSchedule.ScheduleRun;
                if (scheduleType == ScheduleType.Daily.ToString() && validateDailyRetention == false)
                {
                    var exception = new ArgumentException(Resources.DailyScheduleException);
                    throw exception;
                }

                if (scheduleType == ScheduleType.Weekly.ToString() && validateWeeklyRetention == false)
                {
                    var exception = new ArgumentException(Resources.WeeklyScheduleException);
                    throw exception;
                }

                if (scheduleType == ScheduleType.Weekly.ToString() && validateDailyRetention == true)
                {
                    var exception = new ArgumentException(Resources.WeeklyScheduleWithDailyException);
                    throw exception;
                }
            }
        }