コード例 #1
0
        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);
        }
コード例 #2
0
        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));
                }
            });
        }