public void CreateVMwareAzureV2Profile() { using (UndoContext context = UndoContext.Current) { context.Start(); var client = GetSiteRecoveryClient(CustomHttpHandler); string policyName = "Hitesh-VMwareAzureV2-Profile"; var input = new InMageAzureV2PolicyInput { 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 InMageAzureV2 Policy Object. /// </summary> private void UpdateV2APolicyObject() { if (string.Compare( this.InputObject.ReplicationProvider, Constants.InMageAzureV2, StringComparison.OrdinalIgnoreCase) != 0) { throw new InvalidOperationException( string.Format( Resources.IncorrectReplicationProvider, this.InputObject.ReplicationProvider)); } // Get the InMageAzureV2 Provider specific details from the Policy. var replicationProviderSettings = this.InputObject.ReplicationProviderSettings as ASRInMageAzureV2PolicyDetails; // Set the Paremeters to be updated. this.applicationConsistentSnapshotFrequencyInMinutes = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName( () => this.applicationConsistentSnapshotFrequencyInHours)) ? this.ApplicationConsistentSnapshotFrequencyInHours * 60 : replicationProviderSettings.AppConsistentFrequencyInMinutes; 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); this.crashConsistentFrequencyInMinutes = replicationProviderSettings.CrashConsistentFrequencyInMinutes; // Set the Provider Specific Input for InMageAzureV2. var inmageAzureV2PolicyInput = new InMageAzureV2PolicyInput { AppConsistentFrequencyInMinutes = this.applicationConsistentSnapshotFrequencyInMinutes, RecoveryPointHistory = this.RecoveryPointRetentionInHours * 60, // Convert from hours to minutes. RecoveryPointThresholdInMinutes = this.rpoWarningThresholdInMinutes, MultiVmSyncStatus = (SetMultiVmSyncStatus)Enum.Parse( typeof(SetMultiVmSyncStatus), this.multiVmSyncStatus), CrashConsistentFrequencyInMinutes = this.crashConsistentFrequencyInMinutes }; var updatePolicyProperties = new UpdatePolicyInputProperties { ReplicationProviderSettings = inmageAzureV2PolicyInput }; // 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)); }