Exemple #1
0
        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);
            }
        }
Exemple #2
0
        /// <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));
        }