コード例 #1
0
        /// <summary>
        /// TODO: Revert to standard long running operation once /operationResults endpoint start returning
        /// 202 Code for not Completed Operation.
        /// </summary>
        /// <see cref="https://msdn.microsoft.com/en-us/library/azure/dn781420.aspx#GetOperation"/>
        protected TenantConfigurationLongRunningOperation WaitForOperationToComplete(TenantConfigurationLongRunningOperation longRunningOperation)
        {
            do
            {
                var retryAfter = longRunningOperation.RetryAfter == null || longRunningOperation.RetryAfter.Value < LongRunningOperationDefaultTimeout ?
                                 LongRunningOperationDefaultTimeout : longRunningOperation.RetryAfter.Value;

                WriteProgress(longRunningOperation);

                TestMockSupport.Delay(retryAfter);

                // the operation link is present in the first call to Operation.
                // The next calls to /operationResults do not return Location header, hence preserving this value across calls
                // this is the service side bug.
                var operationStatusLink = longRunningOperation.OperationLink;

                longRunningOperation = Client.GetLongRunningOperationStatus(longRunningOperation);
                longRunningOperation.OperationLink = operationStatusLink;

                WriteVerboseWithTimestamp(Resources.VerboseGetOperationStateTimeoutMessage,
                                          longRunningOperation.OperationResult.State);
            } while (longRunningOperation.OperationResult.State == TenantConfigurationState.InProgress);

            return(longRunningOperation);
        }
コード例 #2
0
 protected void WriteProgress(TenantConfigurationLongRunningOperation operation)
 {
     WriteProgress(new ProgressRecord(0, operation.OperationName, operation.Status.ToString()));
 }