public ImportExportOperationResult GetOperationStatus(string operationStatusLink) { var client = GetCurrentSqlClient(); HttpRequestMessage httpRequest = new HttpRequestMessage { Method = HttpMethod.Get, RequestUri = new Uri(operationStatusLink) }; client.Credentials.ProcessHttpRequestAsync(httpRequest, CancellationToken.None).ConfigureAwait(false).GetAwaiter().GetResult(); var response = client.HttpClient.SendAsync(httpRequest, CancellationToken.None).ConfigureAwait(false).GetAwaiter().GetResult(); response.EnsureSuccessStatusCode(); string responseString = response.Content.ReadAsStringAsync().Result; ImportExportOperationResult operationResult = JsonConvert.DeserializeObject <ImportExportOperationResult>(responseString, new JsonSerializerSettings { Converters = new List <JsonConverter>() { new Rest.Serialization.TransformationJsonConverter() }, NullValueHandling = NullValueHandling.Ignore }); return(operationResult); }
/// <summary> /// Creates the response model given server response /// </summary> /// <param name="response">Server Response</param> /// <returns>Response Model</returns> private AzureSqlDatabaseImportExportBaseModel CreateImportExportResponse(ImportExportOperationResult response, AzureSqlDatabaseImportExportBaseModel originalModel, Uri statusLink) { AzureSqlDatabaseImportExportBaseModel model = originalModel == null ? new AzureSqlDatabaseImportExportBaseModel() : originalModel.Copy(); model.OperationStatusLink = statusLink?.ToString(); return(model); }
/// <summary> /// Gets the status of an import/export operation /// </summary> /// <param name="operationStatusLink">The operation status link</param> /// <returns>Operation status response</returns> public AzureSqlDatabaseImportExportStatusModel GetStatus(string operationStatusLink) { HttpResponseMessage rawHttpResponse; ImportExportOperationResult response = Communicator.GetOperationStatus(operationStatusLink, out rawHttpResponse); OperationStatus?operationStatus = GetOperationStatusFromHttpStatus(rawHttpResponse.StatusCode); AzureSqlDatabaseImportExportStatusModel status = new AzureSqlDatabaseImportExportStatusModel() { ErrorMessage = response.ErrorMessage, LastModifiedTime = response.LastModifiedTime, QueuedTime = response.QueuedTime, StatusMessage = response.Status, // in spite of the name, the field called "Status" is the correct one to put into the "StatusMessage" field Status = operationStatus.HasValue ? operationStatus.Value.ToString() : "", RequestType = response.RequestType, PrivateEndpointRequestStatus = response.PrivateEndpointConnections?.Select(pec => new PrivateEndpointRequestStatus() { PrivateEndpointConnectionName = pec.PrivateEndpointConnectionName, PrivateLinkServiceId = pec.PrivateLinkServiceId, Status = pec.Status }).ToArray(), OperationStatusLink = operationStatusLink }; return(status); }
/// <summary> /// Creates the response model given server response /// </summary> /// <param name="response">Server Response</param> /// <returns>Response Model</returns> private AzureSqlDatabaseImportExportBaseModel CreateImportExportResponse(ImportExportOperationResult response, AzureSqlDatabaseImportExportBaseModel originalModel, Uri statusLink) { AzureSqlDatabaseImportExportBaseModel model = originalModel == null ? new AzureSqlDatabaseImportExportBaseModel() : originalModel.Copy(); model.OperationStatusLink = statusLink?.ToString(); ////model.Status = response.Status.ToString(); ////model.ErrorMessage = response.Error == null ? "" : response.Error.Message; return(model); }
/// <summary> /// Creates new import request /// </summary> public ImportExportOperationResult BeginImportNewDatabase(string resourceGroupName, string serverName, ImportNewDatabaseDefinition parameters, out Uri operationStatusLink) { LastLocationHeader = null; LocationHeaderResetEvent.Reset(); ImportExportOperationResult result = GetCurrentSqlClient().Servers.BeginImportDatabase(resourceGroupName, serverName, parameters); LocationHeaderResetEvent.WaitOne(3000); operationStatusLink = LastLocationHeader; return(result); }
/// <summary> /// Creates the response model given server response /// </summary> /// <param name="response">Server Response</param> /// <returns>Response Model</returns> private AzureSqlDatabaseImportExportBaseModel CreateImportExportResponse(ImportExportOperationResult response, AzureSqlDatabaseImportExportBaseModel originalModel, Uri statusLink) { AzureSqlDatabaseImportExportBaseModel model = originalModel == null ? new AzureSqlDatabaseImportExportBaseModel() : originalModel.Copy(); model.OperationStatusLink = statusLink?.ToString(); // It looks like the ExportDatabase SDK call is currently broken (and returns "null" instead of the response object). // I need to check in a sev2 hotfix now. Once the SDK issue has been resolved, un-comment this and the asserts in // the test code // Also can probably remove the "LastLocationHeader" hack and just rely on the header in the returned results // model.Status = response.Status; return(model); }
/// <summary> /// Gets the status of an import/export operation /// </summary> /// <param name="operationStatusLink">The operation status link</param> /// <returns>Operation status response</returns> public AzureSqlDatabaseImportExportStatusModel GetStatus(string operationStatusLink) { ImportExportOperationResult response = Communicator.GetOperationStatus(operationStatusLink); AzureSqlDatabaseImportExportStatusModel status = new AzureSqlDatabaseImportExportStatusModel() { ErrorMessage = response.ErrorMessage, LastModifiedTime = response.LastModifiedTime, QueuedTime = response.QueuedTime, Status = response.Status, RequestType = response.RequestType, PrivateEndpointRequestStatus = response.PrivateEndpointConnections?.Select(pec => new PrivateEndpointRequestStatus() { PrivateEndpointConnectionName = pec.PrivateEndpointConnectionName, PrivateLinkServiceId = pec.PrivateLinkServiceId, Status = pec.Status }).ToArray(), OperationStatusLink = operationStatusLink }; return(status); }