public ProtectionPolicyResponse AddOrUpdateProtectionPolicy(string rsVaultRgName, string rsVaultName, string policyName, ProtectionPolicyRequest request) { 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); }
public string GetDefaultPolicyId(string resourceGroupName, string resourceName) { string defaultPolicyName = ConfigurationManager.AppSettings["DefaultPolicyName"]; ProtectionPolicyResponse response = Client.ProtectionPolicies.Get( resourceGroupName, resourceName, defaultPolicyName, CommonTestHelper.GetCustomRequestHeaders()); return(response.Item.Id); }
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 ProtectionPolicyResponse GetProtectionPolicy(string rsVaultRgName, string rsVaultName, string policyName) { ProtectionPolicyResponse response = Client.ProtectionPolicies.GetAsync(rsVaultRgName, rsVaultName, policyName, CommonTestHelper.GetCustomRequestHeaders()).Result; Assert.NotNull(response); Assert.Null(response.Location); Assert.Null(response.AzureAsyncOperation); Assert.Null(response.RetryAfter); Assert.Equal(response.Item.Name, policyName); Assert.Equal(HttpStatusCode.OK, response.StatusCode); return(response); }
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> /// Fetches policies by name /// </summary> /// <param name="policyName">Name of the policy to be fetched</param> /// <param name="serviceClientAdapter">Service client adapter with which to make calls</param> /// <returns></returns> public static ProtectionPolicyResponse GetProtectionPolicyByName(string policyName, ServiceClientAdapter serviceClientAdapter) { ProtectionPolicyResponse response = null; try { response = serviceClientAdapter.GetProtectionPolicy(policyName); Logger.Instance.WriteDebug("Successfully fetched policy from service: " + policyName); } catch (AggregateException exception) { // if http response is NotFound - then ignore and return NULL response if (exception.InnerException != null && exception.InnerException is CloudException) { var cloudEx = exception.InnerException as CloudException; if (cloudEx.Response != null) { if (cloudEx.Response.StatusCode != HttpStatusCode.NotFound) { Logger.Instance.WriteDebug("CloudException Response statusCode: " + cloudEx.Response.StatusCode); throw; } } else { throw; } } else { throw; } } return(response); }
public override void ExecuteCmdlet() { ExecutionBlock(() => { base.ExecuteCmdlet(); WriteDebug(string.Format("Input params - Policy: {0}" + "RetentionPolicy:{1}, SchedulePolicy:{2}", Policy == null ? "NULL" : Policy.ToString(), RetentionPolicy == null ? "NULL" : RetentionPolicy.ToString(), SchedulePolicy == null ? "NULL" : SchedulePolicy.ToString())); // Validate policy name PolicyCmdletHelpers.ValidateProtectionPolicyName(Policy.Name); // Validate if policy already exists ProtectionPolicyResponse servicePolicy = PolicyCmdletHelpers.GetProtectionPolicyByName( Policy.Name, ServiceClientAdapter); if (servicePolicy == null) { throw new ArgumentException(string.Format(Resources.PolicyNotFoundException, Policy.Name)); } PsBackupProviderManager providerManager = new PsBackupProviderManager( new Dictionary <System.Enum, object>() { { PolicyParams.ProtectionPolicy, Policy }, { PolicyParams.RetentionPolicy, RetentionPolicy }, { PolicyParams.SchedulePolicy, SchedulePolicy }, }, ServiceClientAdapter); IPsBackupProvider psBackupProvider = providerManager.GetProviderInstance( Policy.WorkloadType, Policy.BackupManagementType); ProtectionPolicyResponse policyResponse = psBackupProvider.ModifyPolicy(); WriteDebug("ModifyPolicy http response from service: " + policyResponse.StatusCode.ToString()); if (policyResponse.StatusCode == System.Net.HttpStatusCode.Accepted) { WriteDebug("Tracking operation status URL for completion: " + policyResponse.AzureAsyncOperation); // Track OperationStatus URL for operation completion BackUpOperationStatusResponse operationResponse = TrackingHelpers.WaitForOperationCompletionUsingStatusLink( policyResponse.AzureAsyncOperation, ServiceClientAdapter.GetProtectionPolicyOperationStatusByURL); WriteDebug("Final operation status: " + operationResponse.OperationStatus.Status); if (operationResponse.OperationStatus.Properties != null && ((OperationStatusJobsExtendedInfo)operationResponse.OperationStatus.Properties).JobIds != null) { // get list of jobIds and return jobResponses WriteObject(GetJobObject( ((OperationStatusJobsExtendedInfo)operationResponse.OperationStatus.Properties).JobIds)); } if (operationResponse.OperationStatus.Status == OperationStatusValues.Failed.ToString()) { // if operation failed, then trace error and throw exception if (operationResponse.OperationStatus.OperationStatusError != null) { WriteDebug(string.Format( "OperationStatus Error: {0} " + "OperationStatus Code: {1}", operationResponse.OperationStatus.OperationStatusError.Message, operationResponse.OperationStatus.OperationStatusError.Code)); } } } else { // ServiceClient will return OK if NO datasources are associated with this policy WriteDebug("No datasources are associated with Policy, http response code: " + policyResponse.StatusCode.ToString()); } }); }
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); } }