public void GetRPTest() { using (UndoContext context = UndoContext.Current) { context.Start(); var client = GetSiteRecoveryClient(CustomHttpHandler); JobQueryParameter jqp = new JobQueryParameter(); var responseRP = client.RecoveryPlan.List(RequestHeaders); var response = client.RecoveryPlan.Get(responseRP.RecoveryPlans[0].ID, RequestHeaders); Assert.NotNull(response.RecoveryPlan); Assert.NotNull(response.RecoveryPlan.ID); Assert.NotNull(response.RecoveryPlan.Name); Assert.Equal(HttpStatusCode.OK, response.StatusCode); } }
public void GetJobTest() { using (UndoContext context = UndoContext.Current) { context.Start(); var client = GetSiteRecoveryClient(CustomHttpHandler); JobQueryParameter jqp = new JobQueryParameter(); var responseJobs = client.Jobs.List(jqp, RequestHeaders); string jobId = responseJobs.Jobs[0].ID; var response = client.Jobs.Get(jobId, RequestHeaders); Assert.NotNull(response.Job); Assert.NotNull(response.Job.ID); Assert.NotNull(response.Job.StartTime); Assert.Equal(HttpStatusCode.OK, response.StatusCode); } }
public void EnumerateJobsTest() { using (UndoContext context = UndoContext.Current) { context.Start(); var client = GetSiteRecoveryClient(CustomHttpHandler); JobQueryParameter jqp = new JobQueryParameter(); var response = client.Jobs.List(jqp, RequestHeaders); jqp.ObjectId = response.Jobs[0].TargetObjectId; response = client.Jobs.List(jqp, RequestHeaders); Assert.True(response.Jobs.Count > 0, "No Asr jobs found."); Assert.True(response.Jobs.All(job => !string.IsNullOrEmpty(job.ID)), "Job ID can't be null or empty"); Assert.Equal(HttpStatusCode.OK, response.StatusCode); } }
/// <summary> /// Queries by Parameters. /// </summary> private void GetByParam() { JobQueryParameter jqp = new JobQueryParameter(); if (this.StartTime.HasValue) { jqp.StartTime = this.StartTime.Value.ToUniversalTime().ToBinary().ToString(); } jqp.State = this.State; this.WriteJobs(RecoveryServicesClient.GetAzureSiteRecoveryJob(jqp).Jobs); }
public void Update() { using (UndoContext context = UndoContext.Current) { context.Start(); var client = GetSiteRecoveryClient(CustomHttpHandler); var requestHeaders = RequestHeaders; requestHeaders.AgentAuthenticationHeader = GenerateAgentAuthenticationHeader(requestHeaders.ClientRequestId); JobQueryParameter jqp = new JobQueryParameter(); var responseRP = client.ProtectionProfile.List(RequestHeaders); string serializedHyperVReplicaAzureProfileManagementInput = null; foreach (var profile in responseRP.ProtectionProfiles) { if (profile.ReplicationProvider == "HyperVReplicaAzure") { string subsId = null; var obj = DataContractUtils<HyperVReplicaAzureProtectionProfileDetails>.Deserialize( profile.ReplicationProviderSetting); var settings = new HyperVReplicaAzureProtectionProfileInput(); settings.AppConsistencyFreq = obj.AppConsistencyFreq; settings.IsEncryptionEnabled = obj.IsEncryptionEnabled; settings.OnlineIrStartTime = obj.OnlineIrStartTime; settings.RecoveryPointHistoryDuration = obj.RecoveryPointHistoryDuration; settings.ReplicationInterval = obj.ReplicationInterval; settings.StorageAccounts = new List<CustomerStorageAccount>(); var storageAccount = new CustomerStorageAccount(); storageAccount.StorageAccountName = obj.ActiveStorageAccount.StorageAccountName; subsId = storageAccount.SubscriptionId; storageAccount.SubscriptionId = "MySubscriptionId"; settings.StorageAccounts.Add(storageAccount); serializedHyperVReplicaAzureProfileManagementInput = DataContractUtils<HyperVReplicaAzureProtectionProfileInput>.Serialize(settings); // update the profile object. var input = new UpdateProtectionProfileInput(); input.ReplicationProviderSettings = serializedHyperVReplicaAzureProfileManagementInput; var responseUpdate = client.ProtectionProfile.Update(input, profile.ID, RequestHeaders); var responseGet = client.ProtectionProfile.Get(profile.ID, RequestHeaders); // check for subsid. Assert.NotNull(responseGet.ProtectionProfile); // revert the temp changes. storageAccount.SubscriptionId = subsId; serializedHyperVReplicaAzureProfileManagementInput = DataContractUtils<HyperVReplicaAzureProtectionProfileInput>.Serialize(settings); input.ReplicationProviderSettings = serializedHyperVReplicaAzureProfileManagementInput; responseUpdate = client.ProtectionProfile.Update( input, profile.ID, requestHeaders); return; } } } }
public void CreateAndAssociateE2A(string provider) { using (UndoContext context = UndoContext.Current) { context.Start(); var client = GetSiteRecoveryClient(CustomHttpHandler); var requestHeaders = RequestHeaders; requestHeaders.AgentAuthenticationHeader = GenerateAgentAuthenticationHeader(requestHeaders.ClientRequestId); JobQueryParameter jqp = new JobQueryParameter(); var responseRP = client.ProtectionProfile.List(RequestHeaders); string serializedHyperVReplicaAzureProfileManagementInput = null; foreach (var profile in responseRP.ProtectionProfiles) { if (profile.AssociationDetail[0].AssociationStatus == "Paired") { // Instead of creating new set of values. Picking the values from already paired cloud. var obj = DataContractUtils<HyperVReplicaAzureProtectionProfileDetails>.Deserialize( profile.ReplicationProviderSetting); var settings = new HyperVReplicaAzureProtectionProfileInput(); settings.AppConsistencyFreq = obj.AppConsistencyFreq; settings.IsEncryptionEnabled = obj.IsEncryptionEnabled; settings.OnlineIrStartTime = obj.OnlineIrStartTime; settings.RecoveryPointHistoryDuration = obj.RecoveryPointHistoryDuration; settings.ReplicationInterval = obj.ReplicationInterval; settings.StorageAccounts = new List<CustomerStorageAccount>(); var storageAccount = new CustomerStorageAccount(); storageAccount.StorageAccountName = obj.ActiveStorageAccount.StorageAccountName; storageAccount.SubscriptionId = obj.ActiveStorageAccount.SubscriptionId; settings.StorageAccounts.Add(storageAccount); serializedHyperVReplicaAzureProfileManagementInput = DataContractUtils<HyperVReplicaAzureProtectionProfileInput>.Serialize(settings); } } var responsePC = client.ProtectionContainer.List(RequestHeaders); foreach (var pc in responsePC.ProtectionContainers) { if (string.IsNullOrWhiteSpace(pc.Role)) { var input = new CreateAndAssociateProtectionProfileInput(); input.ProtectionProfileInput = new CreateProtectionProfileInput(); input.ProtectionProfileInput.Name = "PP1"; input.ProtectionProfileInput.ReplicationProvider = "HyperVReplicaAzure"; input.ProtectionProfileInput.ReplicationProviderSettings = serializedHyperVReplicaAzureProfileManagementInput; input.AssociationInput = new ProtectionProfileAssociationInput(); input.AssociationInput.PrimaryProtectionContainerId = pc.ID; input.AssociationInput.RecoveryProtectionContainerId = AzureProtectionContainerId; client.ProtectionProfile.CreateAndAssociate(input, requestHeaders); } } //Assert.NotNull(response.); //Assert.NotNull(response.RecoveryPlan.ID); //Assert.NotNull(response.RecoveryPlan.Name); //Assert.Equal(HttpStatusCode.OK, response.StatusCode); } }
public void DissociateAndDelete() { using (UndoContext context = UndoContext.Current) { JobResponse response = null; context.Start(); var client = GetSiteRecoveryClient(CustomHttpHandler); var requestHeaders = RequestHeaders; requestHeaders.AgentAuthenticationHeader = GenerateAgentAuthenticationHeader(requestHeaders.ClientRequestId); JobQueryParameter jqp = new JobQueryParameter(); var responseRP = client.ProtectionProfile.List(RequestHeaders); foreach (var profile in responseRP.ProtectionProfiles) { foreach (var associationDetail in profile.AssociationDetail) { if (associationDetail.AssociationStatus == "Paired") { var input = new CreateAndAssociateProtectionProfileInput(); input.AssociationInput.PrimaryProtectionContainerId = associationDetail.PrimaryProtectionContainerId; input.AssociationInput.RecoveryProtectionContainerId = associationDetail.RecoveryProtectionContainerId; response = client.ProtectionProfile.DissociateAndDelete( profile.ID, input, requestHeaders); break; } } } Assert.NotNull(response); Assert.NotNull(response.Job.ID); Assert.Equal(HttpStatusCode.OK, response.StatusCode); } }
/// <summary> /// Get Azure Site Recovery Job. /// </summary> /// <param name="jqp">Job query parameter.</param> /// <returns>Job list response</returns> public JobListResponse GetAzureSiteRecoveryJob(JobQueryParameter jqp) { return this.GetSiteRecoveryClient().Jobs.List(jqp, this.GetRequestHeaders()); }
/// <summary> /// Get the list of all jobs. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.WindowsAzure.Management.SiteRecovery.IJobOperations. /// </param> /// <param name='parameters'> /// Optional. Job query parameter. /// </param> /// <param name='customRequestHeaders'> /// Optional. Request header parameters. /// </param> /// <returns> /// The response model for the list Jobs operation. /// </returns> public static Task<JobListResponse> ListAsync(this IJobOperations operations, JobQueryParameter parameters, CustomRequestHeaders customRequestHeaders) { return operations.ListAsync(parameters, customRequestHeaders, CancellationToken.None); }
/// <summary> /// Get the list of all jobs. /// </summary> /// <param name='operations'> /// Reference to the /// Microsoft.WindowsAzure.Management.SiteRecovery.IJobOperations. /// </param> /// <param name='parameters'> /// Optional. Job query parameter. /// </param> /// <param name='customRequestHeaders'> /// Optional. Request header parameters. /// </param> /// <returns> /// The response model for the list Jobs operation. /// </returns> public static JobListResponse List(this IJobOperations operations, JobQueryParameter parameters, CustomRequestHeaders customRequestHeaders) { return Task.Factory.StartNew((object s) => { return ((IJobOperations)s).ListAsync(parameters, customRequestHeaders); } , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult(); }
private void RestartJobTest(string state) { using (UndoContext context = UndoContext.Current) { context.Start(); var client = GetSiteRecoveryClient(CustomHttpHandler); var requestHeaders = RequestHeaders; requestHeaders.AgentAuthenticationHeader = GenerateAgentAuthenticationHeader(requestHeaders.ClientRequestId); JobQueryParameter jqp = new JobQueryParameter(); var responseJobs = client.Jobs.List(jqp, RequestHeaders); JobResponse response = null; try { foreach (var job in responseJobs.Jobs) { if (job.State == state) { response = client.Jobs.Restart(job.ID, requestHeaders); } } } catch (CloudException cloudEx) { if (cloudEx.Error.Code == "CannotRemediateSucceededWorkflow" || cloudEx.Error.Code == "CannotRemediateUnfinishedWorkflow" || cloudEx.Error.Code == "FeatureNotAllowed") { // Request was submitted but failed initial validation. // But our scenario of restart job request was accepted, so test succeeded. return; } } Assert.NotNull(response.Job); Assert.NotNull(response.Job.ID); Assert.NotNull(response.Job.StartTime); Assert.Equal(HttpStatusCode.OK, response.StatusCode); } }
public void CancelJobTest() { using (UndoContext context = UndoContext.Current) { context.Start(); var client = GetSiteRecoveryClient(CustomHttpHandler); var requestHeaders = RequestHeaders; requestHeaders.AgentAuthenticationHeader = GenerateAgentAuthenticationHeader(requestHeaders.ClientRequestId); JobQueryParameter jqp = new JobQueryParameter(); var responseJobs = client.Jobs.List(jqp, requestHeaders); var response = client.Jobs.Cancel(responseJobs.Jobs[0].ID, RequestHeaders); Assert.Equal(HttpStatusCode.NoContent, response.StatusCode); } }