public ProtectionPolicyResponse AddOrUpdateProtectionPolicy( string policyName, ProtectionPolicyRequest request) { string rsVaultRgName = CommonTestHelper.GetSetting(TestConstants.RsVaultRgName); string rsVaultName = CommonTestHelper.GetSetting(TestConstants.RsVaultName); ProtectionPolicyResponse response = Client.ProtectionPolicies.CreateOrUpdateAsync(rsVaultRgName, rsVaultName, policyName, request, CommonTestHelper.GetCustomRequestHeaders()).Result; Assert.NotNull(response); if (response.StatusCode == HttpStatusCode.OK) { Assert.Null(response.Location); Assert.Null(response.AzureAsyncOperation); Assert.Null(response.RetryAfter); Assert.NotNull(response.Item); Assert.NotNull(response.Item.Id); Assert.NotNull(response.Item.Name); Assert.NotNull(response.Item.Type); } else { Assert.Equal(HttpStatusCode.Accepted, response.StatusCode); Assert.NotNull(response.Location); Assert.NotNull(response.AzureAsyncOperation); Assert.NotNull(response.RetryAfter); } return(response); }
/// <summary> /// Creates policy given the provider data /// </summary> /// <returns>Created policy object as returned by the service</returns> public ProtectionPolicyResponse CreatePolicy() { string policyName = (string)ProviderData[PolicyParams.PolicyName]; CmdletModel.WorkloadType workloadType = (CmdletModel.WorkloadType)ProviderData[PolicyParams.WorkloadType]; RetentionPolicyBase retentionPolicy = ProviderData.ContainsKey(PolicyParams.RetentionPolicy) ? (RetentionPolicyBase)ProviderData[PolicyParams.RetentionPolicy] : null; ValidateAzureSqlWorkloadType(workloadType); // validate RetentionPolicy ValidateAzureSqlRetentionPolicy(retentionPolicy); Logger.Instance.WriteDebug("Validation of Retention policy is successful"); // construct Hydra policy request ProtectionPolicyRequest hydraRequest = new ProtectionPolicyRequest() { Item = new ProtectionPolicyResource() { Properties = new AzureSqlProtectionPolicy() { RetentionPolicy = PolicyHelpers.GetServiceClientSimpleRetentionPolicy( (CmdletModel.SimpleRetentionPolicy)retentionPolicy) } } }; return(ServiceClientAdapter.CreateOrUpdateProtectionPolicy( policyName, hydraRequest)); }
/// <summary> /// Creates policy given the provider data /// </summary> /// <returns>Created policy object as returned by the service</returns> public ProtectionPolicyResponse CreatePolicy() { string policyName = (string)ProviderData[PolicyParams.PolicyName]; Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models.WorkloadType workloadType = (Microsoft.Azure.Commands.RecoveryServices.Backup.Cmdlets.Models.WorkloadType)ProviderData[PolicyParams.WorkloadType]; RetentionPolicyBase retentionPolicy = ProviderData.ContainsKey(PolicyParams.RetentionPolicy) ? (RetentionPolicyBase)ProviderData[PolicyParams.RetentionPolicy] : null; SchedulePolicyBase schedulePolicy = ProviderData.ContainsKey(PolicyParams.SchedulePolicy) ? (SchedulePolicyBase)ProviderData[PolicyParams.SchedulePolicy] : null; // do validations ValidateAzureVMWorkloadType(workloadType); ValidateAzureVMSchedulePolicy(schedulePolicy); Logger.Instance.WriteDebug("Validation of Schedule policy is successful"); // validate RetentionPolicy ValidateAzureVMRetentionPolicy(retentionPolicy); Logger.Instance.WriteDebug("Validation of Retention policy is successful"); // update the retention times from backupSchedule to retentionPolicy after converting to UTC CopyScheduleTimeToRetentionTimes((CmdletModel.LongTermRetentionPolicy)retentionPolicy, (CmdletModel.SimpleSchedulePolicy)schedulePolicy); Logger.Instance.WriteDebug("Copy of RetentionTime from with SchedulePolicy to RetentionPolicy is successful"); // Now validate both RetentionPolicy and SchedulePolicy together PolicyHelpers.ValidateLongTermRetentionPolicyWithSimpleRetentionPolicy( (CmdletModel.LongTermRetentionPolicy)retentionPolicy, (CmdletModel.SimpleSchedulePolicy)schedulePolicy); Logger.Instance.WriteDebug("Validation of Retention policy with Schedule policy is successful"); // construct Service Client policy request ProtectionPolicyRequest serviceClientRequest = new ProtectionPolicyRequest() { Item = new ProtectionPolicyResource() { Properties = new AzureIaaSVMProtectionPolicy() { RetentionPolicy = PolicyHelpers.GetServiceClientLongTermRetentionPolicy( (CmdletModel.LongTermRetentionPolicy)retentionPolicy), SchedulePolicy = PolicyHelpers.GetServiceClientSimpleSchedulePolicy( (CmdletModel.SimpleSchedulePolicy)schedulePolicy) } } }; return(ServiceClientAdapter.CreateOrUpdateProtectionPolicy( policyName, serviceClientRequest)); }
/// <summary> /// Creates a new policy or updates an already existing policy /// </summary> /// <param name="policyName">Name of the policy</param> /// <param name="request">Policy create or update request</param> /// <returns>Policy created by this operation</returns> public ProtectionPolicyResponse CreateOrUpdateProtectionPolicy( string policyName, ProtectionPolicyRequest request) { return(BmsAdapter.Client.ProtectionPolicies.CreateOrUpdateAsync( BmsAdapter.GetResourceGroupName(), BmsAdapter.GetResourceName(), policyName, request, BmsAdapter.GetCustomRequestHeaders(), BmsAdapter.CmdletCancellationToken).Result); }
public void PolicyCrudTest() { using (UndoContext context = UndoContext.Current) { context.Start(); string resourceNamespace = ConfigurationManager.AppSettings["ResourceNamespace"]; string resourceGroupName = ConfigurationManager.AppSettings["RsVaultRgNameRP"]; string resourceName = ConfigurationManager.AppSettings["RsVaultNameRP"]; string location = ConfigurationManager.AppSettings["vaultLocationRP"]; string defaultPolicyName = ConfigurationManager.AppSettings["DefaultPolicyName"]; var client = GetServiceClient <RecoveryServicesBackupManagementClient>(resourceNamespace); // 1. Create vault VaultTestHelpers vaultTestHelper = new VaultTestHelpers(client); vaultTestHelper.CreateVault(resourceGroupName, resourceName, location); PolicyTestHelpers policyTestHelper = new PolicyTestHelpers(client); // ACTION: Get default policy ProtectionPolicyResponse response = policyTestHelper.GetProtectionPolicy(resourceGroupName, resourceName, defaultPolicyName); // VALIDATION: Name should match Assert.NotNull(response.Item.Name); Assert.Equal(response.Item.Name, defaultPolicyName); Assert.NotNull(response.Item.Id); Assert.NotNull(response.Item.Type); Assert.NotNull(response.Item.Properties); // ACTION: Add new policy ProtectionPolicyRequest request = new ProtectionPolicyRequest(); request.Item = new ProtectionPolicyResource(); request.Item.Properties = response.Item.Properties; string newPolicyName = defaultPolicyName + "_updated"; response = policyTestHelper.AddOrUpdateProtectionPolicy(resourceGroupName, resourceName, newPolicyName, request); // ACTION: Update the policy response = policyTestHelper.AddOrUpdateProtectionPolicy(resourceGroupName, resourceName, newPolicyName, request); // VALIDATION: Name should match Assert.NotNull(response.Item.Name); Assert.Equal(response.Item.Name, newPolicyName); Assert.NotNull(response.Item.Id); Assert.NotNull(response.Item.Type); Assert.NotNull(response.Item.Properties); // ACTION: Delete the policy AzureOperationResponse deleteResponse = policyTestHelper.DeleteProtectionPolicy(resourceGroupName, resourceName, newPolicyName); Assert.Equal(deleteResponse.StatusCode, HttpStatusCode.OK); } }
public void GetAddUpdateDeleteIaaSVMPolicyTest() { using (UndoContext context = UndoContext.Current) { context.Start(); string resourceNamespace = ConfigurationManager.AppSettings["ResourceNamespace"]; var client = GetServiceClient <RecoveryServicesBackupManagementClient>(resourceNamespace); PolicyTestHelper policyTestHelper = new PolicyTestHelper(client); string policyName = ConfigurationManager.AppSettings["IaaSVMPolicyName"]; // get policy ProtectionPolicyResponse response = policyTestHelper.GetProtectionPolicy(policyName); Assert.NotNull(response.Item.Name); Assert.Equal(response.Item.Name, policyName); Assert.NotNull(response.Item.Id); Assert.NotNull(response.Item.Type); Assert.NotNull(response.Item.Properties); // now add new policy ProtectionPolicyRequest request = new ProtectionPolicyRequest() { Item = new ProtectionPolicyResource() { Properties = response.Item.Properties } }; string newPolicyName = ConfigurationManager.AppSettings["IaaSVMModifiedPolicyName"]; response = policyTestHelper.AddOrUpdateProtectionPolicy( newPolicyName, request); // now update the policy response = policyTestHelper.AddOrUpdateProtectionPolicy( newPolicyName, request); // validations Assert.NotNull(response.Item.Name); Assert.Equal(response.Item.Name, newPolicyName); Assert.NotNull(response.Item.Id); Assert.NotNull(response.Item.Type); Assert.NotNull(response.Item.Properties); // delete the policy AzureOperationResponse deleteResponse = policyTestHelper.DeleteProtectionPolicy(newPolicyName); Assert.Equal(deleteResponse.StatusCode, HttpStatusCode.OK); } }
/// <summary> /// Modifies policy using the provider data /// </summary> /// <returns>Modified policy object as returned by the service</returns> public ProtectionPolicyResponse ModifyPolicy() { RetentionPolicyBase retentionPolicy = ProviderData.ContainsKey(PolicyParams.RetentionPolicy) ? (RetentionPolicyBase)ProviderData[PolicyParams.RetentionPolicy] : null; PolicyBase policy = ProviderData.ContainsKey(PolicyParams.ProtectionPolicy) ? (PolicyBase)ProviderData[PolicyParams.ProtectionPolicy] : null; // RetentionPolicy if (retentionPolicy == null) { throw new ArgumentException(Resources.RetentionPolicyEmptyInAzureSql); } else { ValidateAzureSqlRetentionPolicy(retentionPolicy); ((AzureSqlPolicy)policy).RetentionPolicy = retentionPolicy; Logger.Instance.WriteDebug("Validation of Retention policy is successful"); } CmdletModel.SimpleRetentionPolicy sqlRetentionPolicy = (CmdletModel.SimpleRetentionPolicy)((AzureSqlPolicy)policy).RetentionPolicy; ProtectionPolicyRequest hydraRequest = new ProtectionPolicyRequest() { Item = new ProtectionPolicyResource() { Properties = new AzureSqlProtectionPolicy() { RetentionPolicy = PolicyHelpers.GetServiceClientSimpleRetentionPolicy(sqlRetentionPolicy) } } }; return(ServiceClientAdapter.CreateOrUpdateProtectionPolicy(policy.Name, hydraRequest)); }
/// <summary> /// Modifies policy using the provider data /// </summary> /// <returns>Modified policy object as returned by the service</returns> public ProtectionPolicyResponse ModifyPolicy() { RetentionPolicyBase retentionPolicy = ProviderData.ContainsKey(PolicyParams.RetentionPolicy) ? (RetentionPolicyBase)ProviderData[PolicyParams.RetentionPolicy] : null; SchedulePolicyBase schedulePolicy = ProviderData.ContainsKey(PolicyParams.SchedulePolicy) ? (SchedulePolicyBase)ProviderData[PolicyParams.SchedulePolicy] : null; PolicyBase policy = ProviderData.ContainsKey(PolicyParams.ProtectionPolicy) ? (PolicyBase)ProviderData[PolicyParams.ProtectionPolicy] : null; // do validations ValidateAzureVMProtectionPolicy(policy); Logger.Instance.WriteDebug("Validation of Protection Policy is successful"); // RetentionPolicy and SchedulePolicy both should not be empty if (retentionPolicy == null && schedulePolicy == null) { throw new ArgumentException(Resources.BothRetentionAndSchedulePoliciesEmpty); } // validate RetentionPolicy and SchedulePolicy if (schedulePolicy != null) { ValidateAzureVMSchedulePolicy(schedulePolicy); ((AzureVmPolicy)policy).SchedulePolicy = schedulePolicy; Logger.Instance.WriteDebug("Validation of Schedule policy is successful"); } if (retentionPolicy != null) { ValidateAzureVMRetentionPolicy(retentionPolicy); ((AzureVmPolicy)policy).RetentionPolicy = retentionPolicy; Logger.Instance.WriteDebug("Validation of Retention policy is successful"); } // copy the backupSchedule time to retentionPolicy after converting to UTC CopyScheduleTimeToRetentionTimes( (CmdletModel.LongTermRetentionPolicy)((AzureVmPolicy)policy).RetentionPolicy, (CmdletModel.SimpleSchedulePolicy)((AzureVmPolicy)policy).SchedulePolicy); Logger.Instance.WriteDebug("Copy of RetentionTime from with SchedulePolicy to RetentionPolicy is successful"); // Now validate both RetentionPolicy and SchedulePolicy matches or not PolicyHelpers.ValidateLongTermRetentionPolicyWithSimpleRetentionPolicy( (CmdletModel.LongTermRetentionPolicy)((AzureVmPolicy)policy).RetentionPolicy, (CmdletModel.SimpleSchedulePolicy)((AzureVmPolicy)policy).SchedulePolicy); Logger.Instance.WriteDebug("Validation of Retention policy with Schedule policy is successful"); // construct Service Client policy request ProtectionPolicyRequest serviceClientRequest = new ProtectionPolicyRequest() { Item = new ProtectionPolicyResource() { Properties = new AzureIaaSVMProtectionPolicy() { RetentionPolicy = PolicyHelpers.GetServiceClientLongTermRetentionPolicy( (CmdletModel.LongTermRetentionPolicy)((AzureVmPolicy)policy).RetentionPolicy), SchedulePolicy = PolicyHelpers.GetServiceClientSimpleSchedulePolicy( (CmdletModel.SimpleSchedulePolicy)((AzureVmPolicy)policy).SchedulePolicy) } } }; return(ServiceClientAdapter.CreateOrUpdateProtectionPolicy(policy.Name, serviceClientRequest)); }
/// <summary> /// The Create Or Update Protection Policy Operation is used to create /// or modify a protection policy which is used in the context of a /// protected item.This is an asynchronous operation. To determine /// whether the backend service has finished processing the request, /// call the Get Policy Operation Result API. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.Azure.Management.RecoveryServices.Backup.IProtectionPolicyOperations. /// </param> /// <param name='resourceGroupName'> /// Required. Resource group name of your recovery services vault. /// </param> /// <param name='resourceName'> /// Required. Name of your recovery services vault. /// </param> /// <param name='policyName'> /// Required. Name of the protection policy to be added/updated. /// </param> /// <param name='request'> /// Required. The protection policy creation request. /// </param> /// <param name='customRequestHeaders'> /// Optional. Request header parameters. /// </param> /// <returns> /// Protection policy response. /// </returns> public static ProtectionPolicyResponse CreateOrUpdate(this IProtectionPolicyOperations operations, string resourceGroupName, string resourceName, string policyName, ProtectionPolicyRequest request, CustomRequestHeaders customRequestHeaders) { return(Task.Factory.StartNew((object s) => { return ((IProtectionPolicyOperations)s).CreateOrUpdateAsync(resourceGroupName, resourceName, policyName, request, customRequestHeaders); } , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult()); }
/// <summary> /// The Create Or Update Protection Policy Operation is used to create /// or modify a protection policy which is used in the context of a /// protected item.This is an asynchronous operation. To determine /// whether the backend service has finished processing the request, /// call the Get Policy Operation Result API. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.Azure.Management.RecoveryServices.Backup.IProtectionPolicyOperations. /// </param> /// <param name='resourceGroupName'> /// Required. Resource group name of your recovery services vault. /// </param> /// <param name='resourceName'> /// Required. Name of your recovery services vault. /// </param> /// <param name='policyName'> /// Required. Name of the protection policy to be added/updated. /// </param> /// <param name='request'> /// Required. The protection policy creation request. /// </param> /// <param name='customRequestHeaders'> /// Optional. Request header parameters. /// </param> /// <returns> /// Protection policy response. /// </returns> public static Task <ProtectionPolicyResponse> CreateOrUpdateAsync(this IProtectionPolicyOperations operations, string resourceGroupName, string resourceName, string policyName, ProtectionPolicyRequest request, CustomRequestHeaders customRequestHeaders) { return(operations.CreateOrUpdateAsync(resourceGroupName, resourceName, policyName, request, customRequestHeaders, CancellationToken.None)); }
public void PolicyCrudTest() { using (UndoContext context = UndoContext.Current) { context.Start(); string resourceNamespace = ConfigurationManager.AppSettings["ResourceNamespace"]; string rsVaultRgName = CommonTestHelper.GetSetting(TestConstants.RsVaultRgName); string rsVaultName = CommonTestHelper.GetSetting(TestConstants.RsVaultName); var client = GetServiceClient <RecoveryServicesBackupManagementClient>(resourceNamespace); PolicyTestHelpers policyTestHelper = new PolicyTestHelpers(client); string policyName = ConfigurationManager.AppSettings["AzureSqlPolicyName"]; //create policy request SimpleRetentionPolicy retPolicy = new SimpleRetentionPolicy(); retPolicy.RetentionDuration = new RetentionDuration() { DurationType = "Weeks", Count = 6 }; AzureSqlProtectionPolicy sqlPolicy = new AzureSqlProtectionPolicy() { RetentionPolicy = retPolicy }; ProtectionPolicyRequest policyRequest = new ProtectionPolicyRequest() { Item = new ProtectionPolicyResource() { Properties = sqlPolicy } }; //create policy ProtectionPolicyResponse response = policyTestHelper.AddOrUpdateProtectionPolicy(rsVaultRgName, rsVaultName, policyName, policyRequest); // get policy response = policyTestHelper.GetProtectionPolicy(rsVaultRgName, rsVaultName, policyName); Assert.NotNull(response.Item.Name); Assert.Equal(response.Item.Name, policyName); Assert.NotNull(response.Item.Id); Assert.NotNull(response.Item.Type); Assert.NotNull(response.Item.Properties); Assert.NotNull(response.Item.Properties as AzureSqlProtectionPolicy); AzureSqlProtectionPolicy resultPolicy = response.Item.Properties as AzureSqlProtectionPolicy; SimpleRetentionPolicy resultRetetion = resultPolicy.RetentionPolicy as SimpleRetentionPolicy; Assert.Equal(resultRetetion.RetentionDuration.DurationType, "Weeks"); Assert.Equal(resultRetetion.RetentionDuration.Count, 6); //update policy request retPolicy.RetentionDuration = new RetentionDuration() { DurationType = "Months", Count = 2 }; sqlPolicy = new AzureSqlProtectionPolicy() { RetentionPolicy = retPolicy }; policyRequest = new ProtectionPolicyRequest() { Item = new ProtectionPolicyResource() { Properties = sqlPolicy } }; // update policy response = policyTestHelper.AddOrUpdateProtectionPolicy(rsVaultRgName, rsVaultName, policyName, policyRequest); // validations Assert.NotNull(response.Item.Name); Assert.Equal(response.Item.Name, policyName); Assert.NotNull(response.Item.Id); Assert.NotNull(response.Item.Type); Assert.NotNull(response.Item.Properties); Assert.NotNull(response.Item.Properties as AzureSqlProtectionPolicy); resultPolicy = response.Item.Properties as AzureSqlProtectionPolicy; resultRetetion = resultPolicy.RetentionPolicy as SimpleRetentionPolicy; Assert.Equal(resultRetetion.RetentionDuration.DurationType, "Months"); Assert.Equal(resultRetetion.RetentionDuration.Count, 2); // delete the policy AzureOperationResponse deleteResponse = policyTestHelper.DeleteProtectionPolicy(rsVaultRgName, rsVaultName, policyName); Assert.Equal(deleteResponse.StatusCode, HttpStatusCode.OK); } }