/// <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); }
protected void WriteProgress(TenantConfigurationLongRunningOperation operation) { WriteProgress(new ProgressRecord(0, operation.OperationName, operation.Status.ToString())); }