/// <summary> /// Update Azure Site Recovery Policy. /// </summary> /// <param name="UpdatePolicyInput">Policy Input</param> /// <param name="policyName">Policy Name</param> /// <returns>Long operation response</returns> public LongRunningOperationResponse UpdatePolicy(string policyName, UpdatePolicyInput input) { return(this.GetSiteRecoveryClient().Policies.BeginUpdating( input, policyName, this.GetRequestHeaders())); }
/// <summary> /// Update Azure Site Recovery Policy. /// </summary> /// <param name="UpdatePolicyInput">Policy Input</param> /// <param name="policyName">Policy Name</param> /// <returns>Long operation response</returns> public PSSiteRecoveryLongRunningOperation UpdatePolicy( string policyName, UpdatePolicyInput input) { var op = this.GetSiteRecoveryClient() .ReplicationPolicies.BeginUpdateWithHttpMessagesAsync( policyName, input, this.GetRequestHeaders(true)) .GetAwaiter() .GetResult(); var result = SiteRecoveryAutoMapperProfile.Mapper.Map <PSSiteRecoveryLongRunningOperation>(op); return(result); }
/// <summary> /// Updates an InMage Policy Object. /// </summary> private void UpdateV2VPolicyObject() { if (string.Compare( this.InputObject.ReplicationProvider, Constants.InMage, StringComparison.OrdinalIgnoreCase) != 0) { throw new InvalidOperationException( string.Format( Resources.IncorrectReplicationProvider, this.InputObject.ReplicationProvider)); } // Get the InMage Provider specific details from the Policy. var replicationProviderSettings = this.InputObject.ReplicationProviderSettings as ASRInMagePolicyDetails; // 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); // Set the Provider Specific Input for InMage. var inmagePolicyInput = new InMagePolicyInput { AppConsistentFrequencyInMinutes = this.applicationConsistentSnapshotFrequencyInMinutes, RecoveryPointHistory = this.RecoveryPointRetentionInHours * 60, // Convert from hours to minutes. RecoveryPointThresholdInMinutes = this.rpoWarningThresholdInMinutes, MultiVmSyncStatus = (SetMultiVmSyncStatus)Enum.Parse( typeof(SetMultiVmSyncStatus), this.multiVmSyncStatus) }; var updatePolicyProperties = new UpdatePolicyInputProperties { ReplicationProviderSettings = inmagePolicyInput }; // 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)); }
/// <summary> /// Creates an E2E Policy object /// </summary> private void EnterpriseToEnterprisePolicyObject() { if ((string.Compare( this.InputObject.ReplicationProvider, Constants.HyperVReplica2012, StringComparison.OrdinalIgnoreCase) != 0) && (string.Compare( this.InputObject.ReplicationProvider, Constants.HyperVReplica2012R2, StringComparison.OrdinalIgnoreCase) != 0)) { throw new InvalidOperationException( string.Format( Resources.IncorrectReplicationProvider, this.InputObject.ReplicationProvider)); } var replicationProviderSettings = this.InputObject.ReplicationProviderSettings as ASRHyperVReplicaPolicyDetails; this.replicationMethod = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName(() => this.ReplicationMethod)) ? (string.Compare( this .ReplicationMethod, Constants .OnlineReplicationMethod, StringComparison .OrdinalIgnoreCase) == 0 ? "OverNetwork" : "Offline") : (string.Compare( replicationProviderSettings.InitialReplicationMethod, Constants.OnlineReplicationMethod, StringComparison.OrdinalIgnoreCase) == 0 ? "OverNetwork" : "Offline"); this.replicationFrequencyInSeconds = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName(() => this.ReplicationFrequencyInSeconds)) ? PSRecoveryServicesClient.ConvertReplicationFrequencyToUshort( this.ReplicationFrequencyInSeconds) : replicationProviderSettings .ReplicationFrequencyInSeconds; this.recoveryPoints = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName(() => this.NumberOfRecoveryPointsToRetain)) ? this.NumberOfRecoveryPointsToRetain : replicationProviderSettings.RecoveryPoints; this.applicationConsistentSnapshotFrequencyInHours = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName( () => this.ApplicationConsistentSnapshotFrequencyInHours)) ? this.ApplicationConsistentSnapshotFrequencyInHours : replicationProviderSettings.ApplicationConsistentSnapshotFrequencyInHours; this.compression = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName(() => this.Compression)) ? this.Compression : replicationProviderSettings.Compression; this.replicationPort = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName(() => this.ReplicationPort)) ? this.ReplicationPort : replicationProviderSettings.ReplicationPort; this.authentication = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName(() => this.Authentication)) ? (ushort)(string.Compare( this .Authentication, Constants .AuthenticationTypeKerberos, StringComparison .OrdinalIgnoreCase) == 0 ? 1 : 2) : (ushort)(string.Compare( replicationProviderSettings.AllowedAuthenticationType, Constants.AuthenticationTypeKerberos, StringComparison.OrdinalIgnoreCase) == 0 ? 1 : 2); this.replicationStartTime = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName(() => this.ReplicationStartTime)) ? this.replicationStartTime : replicationProviderSettings.OnlineReplicationStartTime; this.replicaDeletion = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName(() => this.ReplicaDeletion)) ? this.ReplicaDeletion : replicationProviderSettings.ReplicaDeletionOption; var updatePolicyProperties = new UpdatePolicyInputProperties(); if (string.Compare( this.InputObject.ReplicationProvider, Constants.HyperVReplica2012, StringComparison.OrdinalIgnoreCase) == 0) { updatePolicyProperties.ReplicationProviderSettings = new HyperVReplicaPolicyInput { AllowedAuthenticationType = this.authentication, ApplicationConsistentSnapshotFrequencyInHours = this.applicationConsistentSnapshotFrequencyInHours, Compression = this.compression, InitialReplicationMethod = this.replicationMethod, OnlineReplicationStartTime = this.replicationStartTime.ToString(), RecoveryPoints = this.recoveryPoints, ReplicaDeletion = this.replicaDeletion, ReplicationPort = this.replicationPort }; } else { updatePolicyProperties.ReplicationProviderSettings = new HyperVReplicaBluePolicyInput { AllowedAuthenticationType = this.authentication, ApplicationConsistentSnapshotFrequencyInHours = this.applicationConsistentSnapshotFrequencyInHours, Compression = this.compression, InitialReplicationMethod = this.replicationMethod, OnlineReplicationStartTime = this.replicationStartTime.ToString(), RecoveryPoints = this.recoveryPoints, ReplicaDeletion = this.replicaDeletion, ReplicationPort = this.replicationPort, ReplicationFrequencyInSeconds = this.replicationFrequencyInSeconds }; } var updatePolicyInput = new UpdatePolicyInput { Properties = updatePolicyProperties }; var responseBlue = this.RecoveryServicesClient.UpdatePolicy( this.InputObject.Name, updatePolicyInput); var jobResponseBlue = this.RecoveryServicesClient.GetAzureSiteRecoveryJobDetails( PSRecoveryServicesClient.GetJobIdFromReponseLocation(responseBlue.Location)); this.WriteObject(new ASRJob(jobResponseBlue)); }
/// <summary> /// Creates an E2A Policy Object /// </summary> private void HyperVToAzurePolicyObject() { if (string.Compare( this.InputObject.ReplicationProvider, Constants.HyperVReplicaAzure, StringComparison.OrdinalIgnoreCase) != 0) { throw new InvalidOperationException( string.Format( Resources.IncorrectReplicationProvider, this.InputObject.ReplicationProvider)); } var replicationProviderSettings = this.InputObject.ReplicationProviderSettings as ASRHyperVReplicaAzurePolicyDetails; this.replicationFrequencyInSeconds = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName(() => this.ReplicationFrequencyInSeconds)) ? PSRecoveryServicesClient.ConvertReplicationFrequencyToUshort( this.ReplicationFrequencyInSeconds) : (ushort)replicationProviderSettings .ReplicationFrequencyInSeconds; this.recoveryPoints = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName(() => this.NumberOfRecoveryPointsToRetain)) ? this.NumberOfRecoveryPointsToRetain : replicationProviderSettings.RecoveryPoints; this.applicationConsistentSnapshotFrequencyInHours = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName( () => this.ApplicationConsistentSnapshotFrequencyInHours)) ? this.ApplicationConsistentSnapshotFrequencyInHours : replicationProviderSettings.ApplicationConsistentSnapshotFrequencyInHours; this.replicationStartTime = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName(() => this.ReplicationStartTime)) ? this.replicationStartTime : replicationProviderSettings.OnlineReplicationStartTime; this.recoveryAzureStorageAccountId = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName(() => this.RecoveryAzureStorageAccountId)) ? this.RecoveryAzureStorageAccountId : replicationProviderSettings.ActiveStorageAccountId; this.encryption = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName(() => this.Encryption)) ? this.Encryption : (string.Compare( replicationProviderSettings.Encryption, "Disabled", StringComparison.OrdinalIgnoreCase) == 0 ? Constants.Disable : Constants.Enable); var hyperVReplicaAzurePolicyInput = new HyperVReplicaAzurePolicyInput { ApplicationConsistentSnapshotFrequencyInHours = this.applicationConsistentSnapshotFrequencyInHours, Encryption = this.encryption, OnlineReplicationStartTime = this.replicationStartTime.ToString(), RecoveryPointHistoryDuration = this.recoveryPoints, ReplicationInterval = this.replicationFrequencyInSeconds }; hyperVReplicaAzurePolicyInput.StorageAccounts = new List <string>(); if (this.RecoveryAzureStorageAccountId != null) { var storageAccount = this.recoveryAzureStorageAccountId; hyperVReplicaAzurePolicyInput.StorageAccounts.Add(storageAccount); } var updatePolicyProperties = new UpdatePolicyInputProperties { ReplicationProviderSettings = hyperVReplicaAzurePolicyInput }; 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)); }
/// <summary> /// Updates the policy. /// </summary> /// <remarks> /// The operation to update a replication policy. /// </remarks> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='policyName'> /// Policy Id. /// </param> /// <param name='input'> /// Update Policy Input. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <Policy> BeginUpdateAsync(this IReplicationPoliciesOperations operations, string policyName, UpdatePolicyInput input, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.BeginUpdateWithHttpMessagesAsync(policyName, input, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
/// <summary> /// Updates the policy. /// </summary> /// <remarks> /// The operation to update a replication policy. /// </remarks> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='policyName'> /// Policy Id. /// </param> /// <param name='input'> /// Update Policy Input. /// </param> public static Policy BeginUpdate(this IReplicationPoliciesOperations operations, string policyName, UpdatePolicyInput input) { return(operations.BeginUpdateAsync(policyName, input).GetAwaiter().GetResult()); }
/// <summary> /// Updates an InMageRcm policy. /// </summary> private void UpdateInMageRcmPolicy() { if (string.Compare( this.InputObject.ReplicationProvider, Constants.InMageRcm, StringComparison.OrdinalIgnoreCase) != 0) { throw new InvalidOperationException( string.Format( Resources.IncorrectReplicationProvider, this.InputObject.ReplicationProvider)); } // Get the InMageRcm provider specific details from the policy. var replicationProviderSettings = this.InputObject.ReplicationProviderSettings as ASRInMageRcmPolicyDetails; // 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.RecoveryPointHistoryInMinutes / 60; this.multiVmSyncStatus = this.MyInvocation.BoundParameters.ContainsKey( Utilities.GetMemberName( () => this.MultiVmSyncStatus)) ? this.MultiVmSyncStatus : replicationProviderSettings.MultiVmSyncStatus; this.crashConsistentFrequencyInMinutes = replicationProviderSettings.CrashConsistentFrequencyInMinutes; // Create the update policy input. var updatePolicyInput = new UpdatePolicyInput { Properties = new UpdatePolicyInputProperties { ReplicationProviderSettings = new InMageRcmPolicyCreationInput { RecoveryPointHistoryInMinutes = this.RecoveryPointRetentionInHours * 60, CrashConsistentFrequencyInMinutes = crashConsistentFrequencyInMinutes, AppConsistentFrequencyInMinutes = this.applicationConsistentSnapshotFrequencyInMinutes, EnableMultiVmSync = this.multiVmSyncStatus.Equals(Constants.Enable) ? Constants.True : Constants.False } } }; var response = this.RecoveryServicesClient.UpdatePolicy( this.InputObject.Name, updatePolicyInput); var jobResponse = this.RecoveryServicesClient.GetAzureSiteRecoveryJobDetails( PSRecoveryServicesClient.GetJobIdFromReponseLocation(response.Location)); this.WriteObject(new ASRJob(jobResponse)); }
/// <summary> /// Update Policy. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.Azure.Management.SiteRecovery.IPolicyOperations. /// </param> /// <param name='input'> /// Required. input. /// </param> /// <param name='policyName'> /// Required. Policy name. /// </param> /// <param name='customRequestHeaders'> /// Optional. Request header parameters. /// </param> /// <returns> /// A standard service response for long running operations. /// </returns> public static Task <LongRunningOperationResponse> UpdateAsync(this IPolicyOperations operations, UpdatePolicyInput input, string policyName, CustomRequestHeaders customRequestHeaders) { return(operations.UpdateAsync(input, policyName, customRequestHeaders, CancellationToken.None)); }
/// <summary> /// Update Policy. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.Azure.Management.SiteRecovery.IPolicyOperations. /// </param> /// <param name='input'> /// Required. input. /// </param> /// <param name='policyName'> /// Required. Policy name. /// </param> /// <param name='customRequestHeaders'> /// Optional. Request header parameters. /// </param> /// <returns> /// A standard service response for long running operations. /// </returns> public static LongRunningOperationResponse Update(this IPolicyOperations operations, UpdatePolicyInput input, string policyName, CustomRequestHeaders customRequestHeaders) { return(Task.Factory.StartNew((object s) => { return ((IPolicyOperations)s).UpdateAsync(input, policyName, customRequestHeaders); } , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult()); }