/// <summary> /// Creates an A2A Policy. /// </summary> private void CreateA2APolicy() { this.MultiVmSyncStatus = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName(() => this.MultiVmSyncStatus)) ? this.MultiVmSyncStatus : Constants.Enable; var crashConsistentFrequencyInMinutes = 5; var a2aPolicyCreationInput = new A2APolicyCreationInput() { AppConsistentFrequencyInMinutes = this.ApplicationConsistentSnapshotFrequencyInHours * 60, CrashConsistentFrequencyInMinutes = crashConsistentFrequencyInMinutes, MultiVmSyncStatus = (SetMultiVmSyncStatus)Enum.Parse( typeof(SetMultiVmSyncStatus), this.MultiVmSyncStatus), RecoveryPointHistory = this.RecoveryPointRetentionInHours * 60 }; var createPolicyInputProperties = new CreatePolicyInputProperties() { ProviderSpecificInput = a2aPolicyCreationInput }; var createPolicyInput = new CreatePolicyInput() { Properties = createPolicyInputProperties }; var response = RecoveryServicesClient.CreatePolicy(this.Name, createPolicyInput); string jobId = PSRecoveryServicesClient.GetJobIdFromReponseLocation(response.Location); var jobResponse = RecoveryServicesClient .GetAzureSiteRecoveryJobDetails(jobId); WriteObject(new ASRJob(jobResponse)); }
public void A2ACreatePolicy() { using (UndoContext context = UndoContext.Current) { context.Start(); var client = GetSiteRecoveryClient(CustomHttpHandler, Constants.A2A); string policyName = "A2A-Policy"; var input = new A2APolicyCreationInput { AppConsistentFrequencyInMinutes = 15, CrashConsistentFrequencyInMinutes = 15, MultiVmSyncStatus = "Disable", RecoveryPointHistory = 15, RecoveryPointThresholdInMinutes = 30 }; CreatePolicyInputProperties createInputProp = new CreatePolicyInputProperties() { ProviderSpecificInput = input }; CreatePolicyInput policyInput = new CreatePolicyInput() { Properties = createInputProp }; var response = client.Policies.Create(policyName, policyInput, RequestHeaders); Assert.NotNull(response); Assert.Equal(response.Status, OperationStatus.Succeeded); var policyResponse = response as CreatePolicyOperationResponse; Assert.NotNull(policyResponse); Assert.NotNull(policyResponse.Policy); Assert.Equal(policyResponse.Policy.Name, policyName); } }
/// <summary> /// Updates an Azure to Azure Policy. /// </summary> private void UpdateA2APolicy() { if (string.Compare( this.InputObject.ReplicationProvider, Constants.A2A, StringComparison.OrdinalIgnoreCase) != 0) { throw new InvalidOperationException( string.Format( Resources.IncorrectReplicationProvider, this.InputObject.ReplicationProvider)); } // Get the A2A Provider specific details from the Policy. var replicationProviderSettings = this.InputObject.ReplicationProviderSettings as ASRAzureToAzurePolicyDetails; // Set the Paremeters to be updated. this.applicationConsistentSnapshotFrequencyInMinutes = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName( () => this.applicationConsistentSnapshotFrequencyInHours)) ? this.ApplicationConsistentSnapshotFrequencyInHours * 60 : replicationProviderSettings.AppConsistentFrequencyInMinutes; this.crashConsistentFrequencyInMinutes = replicationProviderSettings.CrashConsistentFrequencyInMinutes; this.RecoveryPointRetentionInHours = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName( () => this.RecoveryPointRetentionInHours)) ? this.RecoveryPointRetentionInHours : replicationProviderSettings.RecoveryPointHistory / 60; this.rpoWarningThresholdInMinutes = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName( () => this.RPOWarningThresholdInMinutes)) ? this.RPOWarningThresholdInMinutes : replicationProviderSettings.RecoveryPointThresholdInMinutes; this.multiVmSyncStatus = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName( () => this.MultiVmSyncStatus)) ? this.MultiVmSyncStatus : (replicationProviderSettings.MultiVmSyncStatus.Equals("Enabled") ? Constants.Enable : Constants.Disable); // Set the Provider Specific Input for AzureToAzure. var a2APolicyInput = new A2APolicyCreationInput { AppConsistentFrequencyInMinutes = this.applicationConsistentSnapshotFrequencyInMinutes, RecoveryPointHistory = this.RecoveryPointRetentionInHours * 60, // Convert from hours to minutes. MultiVmSyncStatus = this.multiVmSyncStatus, CrashConsistentFrequencyInMinutes = this.crashConsistentFrequencyInMinutes }; var updatePolicyProperties = new UpdatePolicyInputProperties { ReplicationProviderSettings = a2APolicyInput }; // Create the Update Policy Input. var updatePolicyInput = new UpdatePolicyInput { Properties = updatePolicyProperties }; var response = this.RecoveryServicesClient.UpdatePolicy( this.InputObject.Name, updatePolicyInput); var jobResponse = this.RecoveryServicesClient.GetAzureSiteRecoveryJobDetails( PSRecoveryServicesClient.GetJobIdFromReponseLocation(response.Location)); this.WriteObject(new ASRJob(jobResponse)); }