/// <summary> /// Initializes a new instance of the /// RecoveryPlanUnplannedFailoverInput class with required arguments. /// </summary> public RecoveryPlanUnplannedFailoverInput(RecoveryPlanUnplannedFailoverInputProperties properties) : this() { if (properties == null) { throw new ArgumentNullException("properties"); } this.Properties = properties; }
/// <summary> /// Starts RP Unplanned failover. /// </summary> private void StartRpUnplannedFailover() { // Refresh RP Object var rp = RecoveryServicesClient.GetAzureSiteRecoveryRecoveryPlan(this.RecoveryPlan.Name); var recoveryPlanUnplannedFailoverInputProperties = new RecoveryPlanUnplannedFailoverInputProperties() { FailoverDirection = this.Direction, SourceSiteOperations = this.PerformSourceSideActions ? "Required" : "NotRequired", //Required|NotRequired ProviderSpecificDetails = new List<RecoveryPlanProviderSpecificFailoverInput>() }; foreach (string replicationProvider in rp.RecoveryPlan.Properties.ReplicationProviders) { if (0 == string.Compare( replicationProvider, Constants.HyperVReplicaAzure, StringComparison.OrdinalIgnoreCase)) { if (this.Direction == Constants.PrimaryToRecovery) { var recoveryPlanHyperVReplicaAzureFailoverInput = new RecoveryPlanHyperVReplicaAzureFailoverInput() { InstanceType = replicationProvider, PrimaryKekCertificatePfx = primaryKekCertpfx, SecondaryKekCertificatePfx = secondaryKekCertpfx, VaultLocation = this.GetCurrentVaultLocation() }; recoveryPlanUnplannedFailoverInputProperties.ProviderSpecificDetails.Add(recoveryPlanHyperVReplicaAzureFailoverInput); } } } var recoveryPlanUnplannedFailoverInput = new RecoveryPlanUnplannedFailoverInput() { Properties = recoveryPlanUnplannedFailoverInputProperties }; LongRunningOperationResponse response = RecoveryServicesClient.StartAzureSiteRecoveryUnplannedFailover( this.RecoveryPlan.Name, recoveryPlanUnplannedFailoverInput); JobResponse jobResponse = RecoveryServicesClient .GetAzureSiteRecoveryJobDetails(PSRecoveryServicesClient.GetJobIdFromReponseLocation(response.Location)); WriteObject(new ASRJob(jobResponse.Job)); }