/// <summary>
        ///     Updates Mobility Service.
        /// </summary>
        /// <param name="fabricName">Fabric Name</param>
        /// <param name="protectionContainerName">Protection Conatiner Name</param>
        /// <param name="replicationProtectedItemName">Replication Protected Item</param>
        /// <param name="input">Update Mobility Service Request</param>
        /// <returns>Job Response</returns>
        public PSSiteRecoveryLongRunningOperation UpdateAzureSiteRecoveryMobilityService(
            string fabricName,
            string protectionContainerName,
            string replicationProtectedItemName,
            UpdateMobilityServiceRequest input)
        {
            var op = this.GetSiteRecoveryClient()
                     .ReplicationProtectedItems.BeginUpdateMobilityServiceWithHttpMessagesAsync(
                fabricName,
                protectionContainerName,
                replicationProtectedItemName,
                input,
                this.GetRequestHeaders(true))
                     .GetAwaiter()
                     .GetResult();

            var result = SiteRecoveryAutoMapperProfile.Mapper.Map <PSSiteRecoveryLongRunningOperation>(op);

            return(result);
        }
Example #2
0
        /// <summary>
        ///     ProcessRecord of the command.
        /// </summary>
        public override void ExecuteSiteRecoveryCmdlet()
        {
            base.ExecuteSiteRecoveryCmdlet();

            if (this.ShouldProcess(
                    "Update Mobility Service",
                    ReplicationProtectedItem.FriendlyName))
            {
                // Validate the Replication Provider for InMageAzureV2 / InMage.
                if (string.Compare(
                        this.ReplicationProtectedItem.ReplicationProvider,
                        Constants.InMageAzureV2,
                        StringComparison.OrdinalIgnoreCase) !=
                    0 &&
                    string.Compare(
                        this.ReplicationProtectedItem.ReplicationProvider,
                        Constants.InMage,
                        StringComparison.OrdinalIgnoreCase) !=
                    0 &&
                    string.Compare(
                        this.ReplicationProtectedItem.ReplicationProvider,
                        Constants.A2A,
                        StringComparison.OrdinalIgnoreCase) !=
                    0)
                {
                    throw new InvalidOperationException(
                              string.Format(
                                  Resources.UnsupportedReplicationProviderForUpdateMobilityService,
                                  this.ReplicationProtectedItem.ReplicationProvider));
                }

                // Set the Fabric Name and Protection Container Name.
                this.fabricName =
                    Utilities.GetValueFromArmId(
                        this.ReplicationProtectedItem.ID,
                        ARMResourceTypeConstants.ReplicationFabrics);
                this.protectionContainerName =
                    Utilities.GetValueFromArmId(
                        this.ReplicationProtectedItem.ID,
                        ARMResourceTypeConstants.ReplicationProtectionContainers);
                this.protectableItemName =
                    Utilities.GetValueFromArmId(
                        this.ReplicationProtectedItem.ID,
                        ARMResourceTypeConstants.ReplicationProtectedItems);

                // Create the Update Mobility Service input request.
                var input = new UpdateMobilityServiceRequest();
                if (this.Account != null)
                {
                    input.Properties = new UpdateMobilityServiceRequestProperties
                    {
                        RunAsAccountId = this.Account.AccountId
                    };
                }
                else
                {
                    input.Properties = new UpdateMobilityServiceRequestProperties();
                }

                // Update the Mobility Service.
                var response = this.RecoveryServicesClient.UpdateAzureSiteRecoveryMobilityService(
                    this.fabricName,
                    this.protectionContainerName,
                    this.protectableItemName,
                    input);

                var jobResponse = this.RecoveryServicesClient.GetAzureSiteRecoveryJobDetails(
                    PSRecoveryServicesClient.GetJobIdFromReponseLocation(response.Location));

                this.WriteObject(new ASRJob(jobResponse));
            }
        }