/// <summary> Import new update version. </summary> /// <param name="updateToImport"> The update to be imported. </param> /// <param name="cancellationToken"> The cancellation token to use. </param> public virtual Response <string> ImportUpdate(ImportUpdateInput updateToImport, CancellationToken cancellationToken = default) { using var scope = _clientDiagnostics.CreateScope("UpdatesClient.ImportUpdate"); scope.Start(); try { ResponseWithHeaders <UpdatesImportUpdateHeaders> response = RestClient.ImportUpdate(updateToImport, cancellationToken); string jobId = GetJobIdFromLocationHeader(response?.Headers?.OperationLocation); return(Response.FromValue(jobId, response.GetRawResponse())); } catch (Exception e) { scope.Failed(e); throw; } }
public async Task ImportUpdate() { var client = CreateClient(); var update = new ImportUpdateInput( new ImportManifestMetadata( "https://adutest.blob.core.windows.net/test/Ak1xigPLmur511bYfCvzeC?sv=2019-02-02&sr=b&sig=L9RZxCUwduStz0m1cj4YnXt6OJCvWSe9SPseum3cclE%3D&se=2020-05-08T20%3A52%3A51Z&sp=r", 453, new Dictionary <string, string> { { "SHA256", "Ak1xigPLmur511bYfCvzeCwF6r/QxiBKeEDHOvHPzr4=" } }), new[] { new FileImportMetadata( FileName, "https://adutest.blob.core.windows.net/test/zVknnlx1tyYSMHY28LZVzk?sv=2019-02-02&sr=b&sig=QtS6bAOcHon18wLwIt9uvHIM%2B4M27EoVPNP4RWpMjyw%3D&se=2020-05-08T20%3A52%3A51Z&sp=r"), }); Response <string> jobIdResponse = await client.ImportUpdateAsync(update); Assert.IsNotNull(jobIdResponse); Assert.IsNotNull(jobIdResponse.GetRawResponse()); Assert.AreEqual(202, jobIdResponse.GetRawResponse().Status); Assert.IsNotNull(jobIdResponse.Value); }
private async Task <string> ImportUpdateStepAsync(string version) { ContentFactory contentFactory = new ContentFactory(_connectionString, BlobContainer); ImportUpdateInput update = await contentFactory.CreateImportUpdate(SimulatorProvider, SimulatorModel, version); ConsoleEx.WriteLine(ConsoleColor.Yellow, "Importing update..."); Response <string> operationIdResponse = await _updatesClient.ImportUpdateAsync(update); Console.WriteLine($"Import operation id: {operationIdResponse.Value}"); Console.WriteLine("Waiting for import to finish..."); Console.WriteLine("(this may take a minute or two)"); bool repeat = true; while (repeat) { Response <Operation> operationResponse = await _updatesClient.GetOperationAsync(operationIdResponse.Value); if (operationResponse.Value.Status == OperationStatus.Succeeded) { Console.WriteLine(operationResponse.Value.Status); repeat = false; } else if (operationResponse.Value.Status == OperationStatus.Failed) { throw new ApplicationException("Import failed with error: \n" + JsonConvert.SerializeObject(operationResponse.Value.Error, Formatting.Indented)); } else { Console.Write("."); await Task.Delay(GetRetryAfterFromResponse(operationIdResponse)); } } Console.WriteLine(); return(operationIdResponse.Value); }