Example #1
0
 /// <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;
     }
 }
Example #2
0
        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);
        }
Example #3
0
        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);
        }