protected override void ProcessRecord() { ExecutionBlock(() => { base.ProcessRecord(); WriteDebug("Making client call"); ProtectionPolicyHelpers.ValidateProtectionPolicyName(Name); AzureBackupClient.CheckProtectionPolicyNameAvailability(Vault.ResourceGroupName, Vault.Name, this.Name); var ScheduleType = ProtectionPolicyHelpers.GetScheduleType(DaysOfWeek, this.ParameterSetName, DailyScheduleParamSet, WeeklyScheduleParamSet); var backupSchedule = ProtectionPolicyHelpers.FillCSMBackupSchedule(ScheduleType, BackupTime, DaysOfWeek); ProtectionPolicyHelpers.ValidateRetentionPolicy(RetentionPolicy, backupSchedule); var addCSMProtectionPolicyRequest = new CSMAddProtectionPolicyRequest(); addCSMProtectionPolicyRequest.PolicyName = this.Name; addCSMProtectionPolicyRequest.Properties = new CSMAddProtectionPolicyRequestProperties(); addCSMProtectionPolicyRequest.Properties.PolicyName = this.Name; addCSMProtectionPolicyRequest.Properties.BackupSchedule = backupSchedule; addCSMProtectionPolicyRequest.Properties.WorkloadType = ProtectionPolicyHelpers.ConvertToCSMWorkLoadType(this.Type); addCSMProtectionPolicyRequest.Properties.LtrRetentionPolicy = ProtectionPolicyHelpers.ConvertToCSMRetentionPolicyObject(RetentionPolicy, backupSchedule); AzureBackupClient.AddProtectionPolicy(Vault.ResourceGroupName, Vault.Name, this.Name, addCSMProtectionPolicyRequest); WriteDebug(Resources.ProtectionPolicyCreated); var policyInfo = AzureBackupClient.GetProtectionPolicyByName(Vault.ResourceGroupName, Vault.Name, Name); WriteObject(ProtectionPolicyHelpers.GetCmdletPolicy(Vault, policyInfo)); }); }
protected override void ProcessRecord() { ExecutionBlock(() => { base.ProcessRecord(); WriteDebug(Resources.MakingClientCall); var response = AzureBackupClient.GetProtectionPolicyByName(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, ProtectionPolicy.Name); var vault = new CmdletModel.AzureRMBackupVault(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, ProtectionPolicy.Location); var policyInfo = ProtectionPolicyHelpers.GetCmdletPolicy(vault, response); if (policyInfo == null) { throw new ArgumentException(String.Format(Resources.PolicyNotFound, ProtectionPolicy.Name)); } FillRemainingValuesForSetPolicyRequest(policyInfo, this.NewName); var backupSchedule = ProtectionPolicyHelpers.FillCSMBackupSchedule(policyInfo.ScheduleType, BackupTime, policyInfo.DaysOfWeek.ToArray <string>()); NewName = (string.IsNullOrEmpty(NewName) ? policyInfo.Name : NewName); var updateProtectionPolicyRequest = new CSMUpdateProtectionPolicyRequest(); updateProtectionPolicyRequest.Properties = new CSMUpdateProtectionPolicyRequestProperties(); updateProtectionPolicyRequest.Properties.PolicyName = this.NewName; updateProtectionPolicyRequest.Properties.BackupSchedule = backupSchedule; if (RetentionPolicy != null && RetentionPolicy.Length > 0) { updateProtectionPolicyRequest.Properties.LtrRetentionPolicy = ProtectionPolicyHelpers.ConvertToCSMRetentionPolicyObject(RetentionPolicy, backupSchedule); ProtectionPolicyHelpers.ValidateRetentionPolicy(RetentionPolicy, backupSchedule); } else { updateProtectionPolicyRequest.Properties.LtrRetentionPolicy = ProtectionPolicyHelpers.ConvertToCSMRetentionPolicyObject(policyInfo.RetentionPolicy, backupSchedule); ProtectionPolicyHelpers.ValidateRetentionPolicy(policyInfo.RetentionPolicy, backupSchedule); } var operationId = AzureBackupClient.UpdateProtectionPolicy(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, policyInfo.Name, updateProtectionPolicyRequest); if (operationId != Guid.Empty) { string resourceGroupName = ProtectionPolicy.ResourceGroupName; string resourceName = ProtectionPolicy.ResourceName; var operationStatus = GetOperationStatus(resourceGroupName, resourceName, operationId); WriteDebug(Resources.PolicyUpdatedReconfigureProtectionDone); WriteObject(GetCreatedJobs(resourceGroupName, resourceName, vault, operationStatus.JobList)); } else { WriteDebug(Resources.PolicyUpdated); } }); }
public AzureRMBackupProtectionPolicy(AzureRMBackupVault vault, CSMProtectionPolicyProperties sourcePolicy, string policyId) : base(vault) { PolicyId = policyId; Name = sourcePolicy.PolicyName; Type = ProtectionPolicyHelpers.ConvertToPowershellWorkloadType(sourcePolicy.WorkloadType); ScheduleType = sourcePolicy.BackupSchedule.ScheduleRun; BackupTime = ProtectionPolicyHelpers.ConvertToPowershellScheduleRunTimes(sourcePolicy.BackupSchedule.ScheduleRunTimes); DaysOfWeek = ProtectionPolicyHelpers.ConvertToPowershellScheduleRunDays(sourcePolicy.BackupSchedule.ScheduleRunDays); RetentionPolicy = ProtectionPolicyHelpers.ConvertCSMRetentionPolicyListToPowershell(sourcePolicy.LtrRetentionPolicy); }
public override void ExecuteCmdlet() { ExecutionBlock(() => { base.ExecuteCmdlet(); if (Name != null) { var policyInfo = AzureBackupClient.GetProtectionPolicyByName(Vault.ResourceGroupName, Vault.Name, Name); WriteObject(ProtectionPolicyHelpers.GetCmdletPolicy(Vault, policyInfo)); } else { var policyObjects = AzureBackupClient.ListProtectionPolicies(Vault.ResourceGroupName, Vault.Name); WriteObject(ProtectionPolicyHelpers.GetCmdletPolicies(Vault, policyObjects)); } }); }
private void FillRemainingValuesForSetPolicyRequest(AzureRMBackupProtectionPolicy policy, string newName) { if (newName != null && NewName != policy.Name) { ProtectionPolicyHelpers.ValidateProtectionPolicyName(this.NewName); AzureBackupClient.CheckProtectionPolicyNameAvailability(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, this.NewName); } BackupTime = (BackupTime == DateTime.MinValue) ? policy.BackupTime : BackupTime; WriteDebug(String.Format(Resources.PolicyParameterSet, this.ParameterSetName.ToString())); if (this.ParameterSetName != NoScheduleParamSet) { if (DaysOfWeek != null && DaysOfWeek.Length > 0 && this.ParameterSetName == WeeklyScheduleParamSet) { policy.ScheduleType = ScheduleType.Weekly.ToString(); policy.DaysOfWeek = DaysOfWeek.ToList <string>(); } else if (this.ParameterSetName == DailyScheduleParamSet && (DaysOfWeek == null || DaysOfWeek.Length <= 0)) { policy.ScheduleType = ScheduleType.Daily.ToString(); policy.DaysOfWeek = new List <string>(); } else { policy.ScheduleType = ProtectionPolicyHelpers.GetScheduleType(DaysOfWeek, this.ParameterSetName, DailyScheduleParamSet, WeeklyScheduleParamSet); } } else if (DaysOfWeek != null && DaysOfWeek.Length > 0) { throw new ArgumentException(Resources.PolicyArgumentException); } }
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); } }); }