Ejemplo n.º 1
0
        async Task GetOperationState(UpdateConfigStatus.ConfigUpdate operationStatus, OperationState state, string operationId)
        {
            switch (operationStatus.State)
            {
                case UpdateConfigStatus.States.NotStarted:
                    state.Status = "NotStarted";
                    break;

                case UpdateConfigStatus.States.CreatingAccounts:
                case UpdateConfigStatus.States.ImportingAccounts:
                case UpdateConfigStatus.States.PreServiceUpdate:
                    state.Status = "InProgress";
                    break;

                case UpdateConfigStatus.States.UpdatingService:
                    System.Diagnostics.Debug.Assert(!String.IsNullOrWhiteSpace(operationStatus.CloudServiceUpdateOperationId));
                    using (var serviceClient = await AzureService.GetServiceManagementClient(async () => await GetRdfeAccessToken()))
                    {
                        await ServiceUpdater.UpdateOperationStatus(serviceClient, operationStatus);
                        if (operationStatus.State != UpdateConfigStatus.States.UpdatingService)
                        {
                            await GetOperationState(operationStatus, state, operationId);
                        }
                        else
                        {
                            state.Status = "InProgress";
                        }
                    }
                    break;

                case UpdateConfigStatus.States.Completed:
                    state.Status = "Succeeded";
                    break;

                case UpdateConfigStatus.States.Failed:
                    state.Status = "Failed";
                    break;
            }
        }
Ejemplo n.º 2
0
 static async Task<AzureServiceManagementClient> GetServiceManagementClient(string subscriptionId, 
     string serviceName, string refreshToken, UpdateConfigStatus.ConfigUpdate operationStatus)
 {
     Func<Task<string>> accessTokenFactory = async () =>
     {
         var accessToken = await DelegationToken.GetAccessTokenFromRefreshToken(refreshToken);
         if (accessToken == null)
         {
             await operationStatus.UpdateStatus(UpdateConfigStatus.States.Failed, "Failed acquiring access token to perform service management operation");
             return String.Empty;
         }
         return accessToken.AccessToken;
     };
     return await AzureService.GetServiceManagementClient(subscriptionId, serviceName, accessTokenFactory);
 }
Ejemplo n.º 3
0
        public static async Task<bool> UpdateOperationStatus(AzureServiceManagementClient serviceClient, UpdateConfigStatus.ConfigUpdate operationStatus)
        {
            var response = await serviceClient.GetOperationStatus(operationStatus.CloudServiceUpdateOperationId);
            switch (response.Status)
            {
                case Microsoft.WindowsAzure.OperationStatus.InProgress:
                    break;

                case Microsoft.WindowsAzure.OperationStatus.Failed:
                    if (operationStatus.EndTime == DateTime.MinValue)
                    {
                        operationStatus.EndTime = DateTime.UtcNow;
                    }
                    await operationStatus.UpdateStatus(UpdateConfigStatus.States.Failed, String.Format("Azure service managment failure. {0}:{1}", response.Error.Code, response.Error.Message));
                    break;

                case Microsoft.WindowsAzure.OperationStatus.Succeeded:
                    if (operationStatus.EndTime == DateTime.MinValue)
                    {
                        operationStatus.EndTime = DateTime.UtcNow;
                    }
                    await operationStatus.UpdateStatus(UpdateConfigStatus.States.Completed, "Operation completed successfully");
                    break;
            }
            return response.Status == Microsoft.WindowsAzure.OperationStatus.InProgress;
        }