/// <summary> /// ProcessRecord of the command. /// </summary> public override void ExecuteSiteRecoveryCmdlet() { base.ExecuteSiteRecoveryCmdlet(); if (this.ShouldProcess( this.ReplicationProtectedItem.FriendlyName, "Switch the appliance")) { // Set the Fabric Name and Protection Container Name. string fabricName = this.Fabric.Name; string protectionContainerName = Utilities.GetValueFromArmId( this.ReplicationProtectedItem.ID, ARMResourceTypeConstants.ReplicationProtectionContainers); var updateApplianceInput = new UpdateApplianceForReplicationProtectedItemInputProperties(); if (this.ReplicationProtectedItem.ReplicationProvider.Equals(Constants.InMageRcm)) { this.InMageRcmValidateSwitchApplianceInput(); this.InMageRcmSwitchAppliance(updateApplianceInput); } else { throw new InvalidOperationException( string.Format( Resources.UnsupportedReplicationProviderOperation, this.ReplicationProtectedItem.ReplicationProvider, "SwitchAppliance")); } var input = new UpdateApplianceForReplicationProtectedItemInput { Properties = updateApplianceInput }; // Switch the appliance for protected item. var response = this.RecoveryServicesClient.SwitchAppliance( fabricName, protectionContainerName, this.ReplicationProtectedItem.Name, input); var jobResponse = this.RecoveryServicesClient.GetAzureSiteRecoveryJobDetails( PSRecoveryServicesClient.GetJobIdFromReponseLocation(response.Location)); this.WriteObject(new ASRJob(jobResponse)); } }
/// <summary> /// Switch appliance of a replication protected item. /// </summary> /// <param name="fabricName">Fabric Name.</param> /// <param name="protectionContainerName">Protection Conatiner Name.</param> /// <param name="replicationProtectedItemName">Replication Protected Item.</param> /// <param name="input">Input for update appliance.</param> /// <returns>Job Response.</returns> public PSSiteRecoveryLongRunningOperation SwitchAppliance( string fabricName, string protectionContainerName, string replicationProtectedItemName, UpdateApplianceForReplicationProtectedItemInput input) { var op = this.GetSiteRecoveryClient() .ReplicationProtectedItems.BeginUpdateApplianceWithHttpMessagesAsync( fabricName, protectionContainerName, replicationProtectedItemName, input, this.GetRequestHeaders(true)) .GetAwaiter() .GetResult(); var result = SiteRecoveryAutoMapperProfile.Mapper.Map <PSSiteRecoveryLongRunningOperation>(op); return(result); }