private const int defaultOperationStatusRetryTimeInMilliSec = 10 * 1000; // 10 sec /// <summary> /// Track completion of long running operation /// </summary> /// <param name="operationId"></param> /// <param name="checkFrequency">In Millisec</param> /// <returns></returns> internal CSMOperationResult TrackOperation(string resourceGroupName, string resourceName, Guid operationId, int checkFrequency = defaultOperationStatusRetryTimeInMilliSec) { CSMOperationResult response = null; while (true) { response = GetOperationStatus(resourceGroupName, resourceName, operationId); if (response.Status != CSMAzureBackupOperationStatus.InProgress.ToString()) { WriteDebug(String.Format(Resources.OperationStatus, response.Status)); break; } TestMockSupport.Delay(checkFrequency); } return(response); }
public override void ExecuteCmdlet() { if (Job != null) { Vault = new AzureRMBackupVault(Job.ResourceGroupName, Job.ResourceName, Job.Location); } InitializeAzureBackupCmdlet(Vault); ExecutionBlock(() => { if (Job != null) { JobID = Job.InstanceId; } WriteDebug(String.Format(Resources.JobId, JobID)); Guid cancelTaskId = AzureBackupClient.TriggerCancelJob(Vault.ResourceGroupName, Vault.Name, JobID); if (cancelTaskId == Guid.Empty) { WriteDebug(String.Format(Resources.TriggeredCancellationJob, JobID)); return; } CSMOperationResult opResponse = TrackOperation(Vault.ResourceGroupName, Vault.Name, cancelTaskId); if (opResponse.Status == CSMAzureBackupOperationStatus.Succeeded.ToString()) { WriteDebug(String.Format(Resources.TriggeredCancellationJob, JobID)); } else { throw new Exception(String.Format(Resources.StopJobFailed, opResponse.Error.Code)); } }); }