public void CopyScheduleTimeToRetentionTimes(CmdletModel.LongTermRetentionPolicy retPolicy, CmdletModel.SimpleSchedulePolicy schPolicy) { // schedule runTimes is already validated if in UTC/not during validate() // now copy times from schedule to retention policy if (retPolicy.IsDailyScheduleEnabled && retPolicy.DailySchedule != null) { retPolicy.DailySchedule.RetentionTimes = schPolicy.ScheduleRunTimes; } if (retPolicy.IsWeeklyScheduleEnabled && retPolicy.WeeklySchedule != null) { retPolicy.WeeklySchedule.RetentionTimes = schPolicy.ScheduleRunTimes; } if (retPolicy.IsMonthlyScheduleEnabled && retPolicy.MonthlySchedule != null) { retPolicy.MonthlySchedule.RetentionTimes = schPolicy.ScheduleRunTimes; } if (retPolicy.IsYearlyScheduleEnabled && retPolicy.YearlySchedule != null) { retPolicy.YearlySchedule.RetentionTimes = schPolicy.ScheduleRunTimes; } }
/// <summary> /// Constructs the retention policy object with default inits /// </summary> /// <returns>Default retention policy object</returns> public RetentionPolicyBase GetDefaultRetentionPolicyObject() { CmdletModel.LongTermRetentionPolicy defaultRetention = new CmdletModel.LongTermRetentionPolicy(); //Default time is 10:30 local time DateTime retentionTime = GenerateRandomTime(); //Daily Retention policy defaultRetention.IsDailyScheduleEnabled = true; defaultRetention.DailySchedule = new Models.DailyRetentionSchedule(); defaultRetention.DailySchedule.RetentionTimes = new List <DateTime>(); defaultRetention.DailySchedule.RetentionTimes.Add(retentionTime); defaultRetention.DailySchedule.DurationCountInDays = 180; //TBD make it const //Weekly Retention policy defaultRetention.IsWeeklyScheduleEnabled = true; defaultRetention.WeeklySchedule = new Models.WeeklyRetentionSchedule(); defaultRetention.WeeklySchedule.DaysOfTheWeek = new List <DayOfWeek>(); defaultRetention.WeeklySchedule.DaysOfTheWeek.Add(DayOfWeek.Sunday); defaultRetention.WeeklySchedule.DurationCountInWeeks = 104; //TBD make it const defaultRetention.WeeklySchedule.RetentionTimes = new List <DateTime>(); defaultRetention.WeeklySchedule.RetentionTimes.Add(retentionTime); //Monthly retention policy defaultRetention.IsMonthlyScheduleEnabled = true; defaultRetention.MonthlySchedule = new Models.MonthlyRetentionSchedule(); defaultRetention.MonthlySchedule.DurationCountInMonths = 60; //tbd: make it const defaultRetention.MonthlySchedule.RetentionTimes = new List <DateTime>(); defaultRetention.MonthlySchedule.RetentionTimes.Add(retentionTime); defaultRetention.MonthlySchedule.RetentionScheduleFormatType = Models.RetentionScheduleFormat.Weekly; //Initialize day based schedule defaultRetention.MonthlySchedule.RetentionScheduleDaily = GetDailyRetentionFormat(); //Initialize Week based schedule defaultRetention.MonthlySchedule.RetentionScheduleWeekly = GetWeeklyRetentionFormat(); //Yearly retention policy defaultRetention.IsYearlyScheduleEnabled = true; defaultRetention.YearlySchedule = new Models.YearlyRetentionSchedule(); defaultRetention.YearlySchedule.DurationCountInYears = 10; defaultRetention.YearlySchedule.RetentionTimes = new List <DateTime>(); defaultRetention.YearlySchedule.RetentionTimes.Add(retentionTime); defaultRetention.YearlySchedule.RetentionScheduleFormatType = Models.RetentionScheduleFormat.Weekly; defaultRetention.YearlySchedule.MonthsOfYear = new List <Models.Month>(); defaultRetention.YearlySchedule.MonthsOfYear.Add(Models.Month.January); defaultRetention.YearlySchedule.RetentionScheduleDaily = GetDailyRetentionFormat(); defaultRetention.YearlySchedule.RetentionScheduleWeekly = GetWeeklyRetentionFormat(); return(defaultRetention); }
public RetentionPolicyBase GetDefaultRetentionPolicyObject() { CmdletModel.LongTermRetentionPolicy defaultRetention = new CmdletModel.LongTermRetentionPolicy(); DateTime retentionTime = AzureWorkloadProviderHelper.GenerateRandomScheduleTime(); //Daily Retention policy defaultRetention.IsDailyScheduleEnabled = true; defaultRetention.DailySchedule = new CmdletModel.DailyRetentionSchedule(); defaultRetention.DailySchedule.RetentionTimes = new List <DateTime>(); defaultRetention.DailySchedule.RetentionTimes.Add(retentionTime); defaultRetention.DailySchedule.DurationCountInDays = defaultFileRetentionCount; return(defaultRetention); }
/// <summary> /// Constructs the retention policy object with default inits /// </summary> /// <returns>Default retention policy object</returns> public RetentionPolicyBase GetDefaultRetentionPolicyObject() { CmdletModel.LongTermRetentionPolicy defaultRetention = new CmdletModel.LongTermRetentionPolicy(); //Default time is 10:30 local time DateTime retentionTime = GenerateRandomTime(); //Daily Retention policy defaultRetention.IsDailyScheduleEnabled = true; defaultRetention.DailySchedule = new Models.DailyRetentionSchedule(); defaultRetention.DailySchedule.RetentionTimes = new List<DateTime>(); defaultRetention.DailySchedule.RetentionTimes.Add(retentionTime); defaultRetention.DailySchedule.DurationCountInDays = 180; //TBD make it const //Weekly Retention policy defaultRetention.IsWeeklyScheduleEnabled = true; defaultRetention.WeeklySchedule = new Models.WeeklyRetentionSchedule(); defaultRetention.WeeklySchedule.DaysOfTheWeek = new List<DayOfWeek>(); defaultRetention.WeeklySchedule.DaysOfTheWeek.Add(DayOfWeek.Sunday); defaultRetention.WeeklySchedule.DurationCountInWeeks = 104; //TBD make it const defaultRetention.WeeklySchedule.RetentionTimes = new List<DateTime>(); defaultRetention.WeeklySchedule.RetentionTimes.Add(retentionTime); //Monthly retention policy defaultRetention.IsMonthlyScheduleEnabled = true; defaultRetention.MonthlySchedule = new Models.MonthlyRetentionSchedule(); defaultRetention.MonthlySchedule.DurationCountInMonths = 60; //tbd: make it const defaultRetention.MonthlySchedule.RetentionTimes = new List<DateTime>(); defaultRetention.MonthlySchedule.RetentionTimes.Add(retentionTime); defaultRetention.MonthlySchedule.RetentionScheduleFormatType = Models.RetentionScheduleFormat.Weekly; //Initialize day based schedule defaultRetention.MonthlySchedule.RetentionScheduleDaily = GetDailyRetentionFormat(); //Initialize Week based schedule defaultRetention.MonthlySchedule.RetentionScheduleWeekly = GetWeeklyRetentionFormat(); //Yearly retention policy defaultRetention.IsYearlyScheduleEnabled = true; defaultRetention.YearlySchedule = new Models.YearlyRetentionSchedule(); defaultRetention.YearlySchedule.DurationCountInYears = 10; defaultRetention.YearlySchedule.RetentionTimes = new List<DateTime>(); defaultRetention.YearlySchedule.RetentionTimes.Add(retentionTime); defaultRetention.YearlySchedule.RetentionScheduleFormatType = Models.RetentionScheduleFormat.Weekly; defaultRetention.YearlySchedule.MonthsOfYear = new List<Models.Month>(); defaultRetention.YearlySchedule.MonthsOfYear.Add(Models.Month.January); defaultRetention.YearlySchedule.RetentionScheduleDaily = GetDailyRetentionFormat(); defaultRetention.YearlySchedule.RetentionScheduleWeekly = GetWeeklyRetentionFormat(); return defaultRetention; }
// <summary> /// Helper function to validate long term rentention policy and simple schedule policy. /// </summary> public static void ValidateLongTermRetentionPolicyWithSimpleRetentionPolicy( LongTermRetentionPolicy ltrPolicy, SimpleSchedulePolicy schPolicy) { // for daily schedule, daily retention policy is required if (schPolicy.ScheduleRunFrequency == ScheduleRunType.Daily && (ltrPolicy.DailySchedule == null || ltrPolicy.IsDailyScheduleEnabled == false)) { throw new ArgumentException(Resources.DailyRetentionScheduleNullException); } // for weekly schedule, daily retention policy should be NULL // AND weekly retention policy is required if (schPolicy.ScheduleRunFrequency == ScheduleRunType.Weekly && (ltrPolicy.IsDailyScheduleEnabled != false || ltrPolicy.WeeklySchedule == null || (ltrPolicy.IsWeeklyScheduleEnabled == false))) { throw new ArgumentException(Resources.WeeklyRetentionScheduleNullException); } // validate daily retention schedule with schPolicy if (ltrPolicy.DailySchedule != null && ltrPolicy.IsDailyScheduleEnabled == true) { ValidateRetentionAndBackupTimes(schPolicy.ScheduleRunTimes, ltrPolicy.DailySchedule.RetentionTimes); } // validate weekly retention schedule with schPolicy if (ltrPolicy.WeeklySchedule != null && ltrPolicy.IsWeeklyScheduleEnabled == true) { ValidateRetentionAndBackupTimes(schPolicy.ScheduleRunTimes, ltrPolicy.WeeklySchedule.RetentionTimes); if (schPolicy.ScheduleRunFrequency == ScheduleRunType.Weekly) { // count of daysOfWeek should match for weekly schedule if (ltrPolicy.WeeklySchedule.DaysOfTheWeek.Count != schPolicy.ScheduleRunDays.Count) { throw new ArgumentException(Resources.DaysofTheWeekInWeeklyRetentionException); } // validate days of week ValidateRetentionAndScheduleDaysOfWeek(schPolicy.ScheduleRunDays, ltrPolicy.WeeklySchedule.DaysOfTheWeek); } } // validate monthly retention schedule with schPolicy if (ltrPolicy.MonthlySchedule != null && ltrPolicy.IsMonthlyScheduleEnabled == true) { ValidateRetentionAndBackupTimes(schPolicy.ScheduleRunTimes, ltrPolicy.MonthlySchedule.RetentionTimes); // if backupSchedule is weekly, then user cannot choose 'Daily Retention format' if (schPolicy.ScheduleRunFrequency == ScheduleRunType.Weekly && ltrPolicy.MonthlySchedule.RetentionScheduleFormatType == Cmdlets.Models.RetentionScheduleFormat.Daily) { throw new ArgumentException(Resources.MonthlyYearlyInvalidDailyRetentionFormatTypeException); } // for monthly and weeklyFormat, validate days of week if (ltrPolicy.MonthlySchedule.RetentionScheduleFormatType == Cmdlets.Models.RetentionScheduleFormat.Weekly && schPolicy.ScheduleRunFrequency == ScheduleRunType.Weekly) { ValidateRetentionAndScheduleDaysOfWeek(schPolicy.ScheduleRunDays, ltrPolicy.MonthlySchedule.RetentionScheduleWeekly.DaysOfTheWeek); } } // validate yearly retention schedule with schPolicy if (ltrPolicy.YearlySchedule != null && ltrPolicy.IsYearlyScheduleEnabled == true) { ValidateRetentionAndBackupTimes(schPolicy.ScheduleRunTimes, ltrPolicy.YearlySchedule.RetentionTimes); // if backupSchedule is weekly, then user cannot choose 'Daily Retention format' if (schPolicy.ScheduleRunFrequency == ScheduleRunType.Weekly && ltrPolicy.YearlySchedule.RetentionScheduleFormatType == Cmdlets.Models.RetentionScheduleFormat.Daily) { throw new ArgumentException(Resources.MonthlyYearlyInvalidDailyRetentionFormatTypeException); } // for yearly and weeklyFormat, validate days of week if (ltrPolicy.YearlySchedule.RetentionScheduleFormatType == Cmdlets.Models.RetentionScheduleFormat.Weekly && schPolicy.ScheduleRunFrequency == ScheduleRunType.Weekly) { ValidateRetentionAndScheduleDaysOfWeek(schPolicy.ScheduleRunDays, ltrPolicy.YearlySchedule.RetentionScheduleWeekly.DaysOfTheWeek); } } }
public void CopyScheduleTimeToRetentionTimes(CmdletModel.LongTermRetentionPolicy retPolicy, CmdletModel.SchedulePolicyBase schPolicyBase) { if (schPolicyBase.GetType() == typeof(CmdletModel.SimpleSchedulePolicy)) { CmdletModel.SimpleSchedulePolicy schPolicy = (CmdletModel.SimpleSchedulePolicy)schPolicyBase; // schedule runTimes is already validated if in UTC/not during validate() // now copy times from schedule to retention policy if (retPolicy.IsDailyScheduleEnabled && retPolicy.DailySchedule != null) { retPolicy.DailySchedule.RetentionTimes = schPolicy.ScheduleRunTimes; } if (retPolicy.IsWeeklyScheduleEnabled && retPolicy.WeeklySchedule != null) { retPolicy.WeeklySchedule.RetentionTimes = schPolicy.ScheduleRunTimes; } if (retPolicy.IsMonthlyScheduleEnabled && retPolicy.MonthlySchedule != null) { retPolicy.MonthlySchedule.RetentionTimes = schPolicy.ScheduleRunTimes; } if (retPolicy.IsYearlyScheduleEnabled && retPolicy.YearlySchedule != null) { retPolicy.YearlySchedule.RetentionTimes = schPolicy.ScheduleRunTimes; } } else if (schPolicyBase.GetType() == typeof(CmdletModel.SimpleSchedulePolicyV2)) { CmdletModel.SimpleSchedulePolicyV2 schPolicyV2 = (CmdletModel.SimpleSchedulePolicyV2)schPolicyBase; // schedule runTimes is already validated if in UTC/not during validate() // now copy times from schedule to retention policy List <DateTime> hourlyWindowStartTime = (schPolicyV2.HourlySchedule != null) ? new List <DateTime> { (DateTime)schPolicyV2.HourlySchedule.WindowStartTime } : null; if (retPolicy.IsDailyScheduleEnabled && retPolicy.DailySchedule != null) { retPolicy.DailySchedule.RetentionTimes = (schPolicyV2.DailySchedule != null) ? schPolicyV2.DailySchedule.ScheduleRunTimes : hourlyWindowStartTime; } if (retPolicy.IsWeeklyScheduleEnabled && retPolicy.WeeklySchedule != null) { retPolicy.WeeklySchedule.RetentionTimes = (schPolicyV2.DailySchedule != null) ? schPolicyV2.DailySchedule.ScheduleRunTimes : ((schPolicyV2.WeeklySchedule != null) ? schPolicyV2.WeeklySchedule.ScheduleRunTimes : hourlyWindowStartTime); } if (retPolicy.IsMonthlyScheduleEnabled && retPolicy.MonthlySchedule != null) { retPolicy.MonthlySchedule.RetentionTimes = (schPolicyV2.DailySchedule != null) ? schPolicyV2.DailySchedule.ScheduleRunTimes : ((schPolicyV2.WeeklySchedule != null) ? schPolicyV2.WeeklySchedule.ScheduleRunTimes : hourlyWindowStartTime); } if (retPolicy.IsYearlyScheduleEnabled && retPolicy.YearlySchedule != null) { retPolicy.YearlySchedule.RetentionTimes = (schPolicyV2.DailySchedule != null) ? schPolicyV2.DailySchedule.ScheduleRunTimes : ((schPolicyV2.WeeklySchedule != null) ? schPolicyV2.WeeklySchedule.ScheduleRunTimes : hourlyWindowStartTime); } } }