예제 #1
0
        /// <summary>
        /// Update specified launch.
        /// </summary>
        /// <param name="id">ID of launch to update.</param>
        /// <param name="request">Information about launch.</param>
        /// <returns>A message from service.</returns>
        public virtual async Task <MessageResponse> UpdateAsync(long id, UpdateLaunchRequest request)
        {
            var uri      = BaseUri.Append($"{ProjectName}/launch/{id}/update");
            var body     = ModelSerializer.Serialize <UpdateLaunchRequest>(request);
            var response = await HttpClient.PutAsync(uri, new StringContent(body, Encoding.UTF8, "application/json")).ConfigureAwait(false);

            response.VerifySuccessStatusCode();
            return(ModelSerializer.Deserialize <MessageResponse>(await response.Content.ReadAsStringAsync().ConfigureAwait(false)));
        }
예제 #2
0
        public void Update(UpdateLaunchRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            TraceLogger.Verbose($"Scheduling request to update launch in {GetHashCode()} proxy instance");

            if (StartTask == null)
            {
                var exp = new InsufficientExecutionStackException("The launch wasn't scheduled for starting to finish it properly.");
                TraceLogger.Error(exp.ToString());
                throw exp;
            }

            if (FinishTask != null)
            {
                var exp = new InsufficientExecutionStackException("The launch is already scheduled for finishing.");
                TraceLogger.Error(exp.ToString());
                throw exp;
            }

            var dependentTasks = new List <Task>();

            dependentTasks.Add(StartTask);

            if (_logsReporter != null)
            {
                dependentTasks.Add(_logsReporter.ProcessingTask);
            }

            if (_additionalTasks != null)
            {
                dependentTasks.AddRange(_additionalTasks);
            }

            UpdateTask = Task.Factory.ContinueWhenAll(dependentTasks.ToArray(), async(dts) =>
                                                      await _requestExecuter.ExecuteAsync(() => _service.Launch.UpdateAsync(Info.Uuid, request), null).ConfigureAwait(false));
        }
예제 #3
0
        public async Task UpdateLaunchAttributes()
        {
            var originalLaunchRequest = new StartLaunchRequest
            {
                Name      = "UpdateLaunchAttributes",
                StartTime = DateTime.UtcNow,
                Mode      = LaunchMode.Default
            };

            var launch = await Service.Launch.StartAsync(originalLaunchRequest);

            var tempLaunch = await Service.Launch.GetAsync(launch.Uuid);

            var updateRequest = new UpdateLaunchRequest()
            {
                Attributes = new List <ItemAttribute> {
                    new ItemAttribute {
                        Key = "k1", Value = "v1"
                    }
                }
            };

            var updateMessage = await Service.Launch.UpdateAsync(tempLaunch.Id, updateRequest);

            updateMessage.Info.Should().Contain("successfully updated");

            await Service.Launch.FinishAsync(launch.Uuid, new FinishLaunchRequest
            {
                EndTime = DateTime.UtcNow
            });

            var gotLaunch = await Service.Launch.GetAsync(launch.Uuid);

            gotLaunch.Name.Should().Be(originalLaunchRequest.Name);
            gotLaunch.Mode.Should().Be(originalLaunchRequest.Mode);
            gotLaunch.Description.Should().BeNull();
            gotLaunch.Attributes.Should().BeEquivalentTo(updateRequest.Attributes);

            await Service.Launch.DeleteAsync(gotLaunch.Id);
        }
예제 #4
0
 public Task <MessageResponse> UpdateAsync(long id, UpdateLaunchRequest model)
 {
     throw new NotImplementedException();
 }
예제 #5
0
 public Task <MessageResponse> UpdateAsync(string uuid, UpdateLaunchRequest request)
 {
     return(PutAsJsonAsync <MessageResponse, UpdateLaunchRequest>($"{ProjectName}/launch/{uuid}/update", request));
 }
예제 #6
0
 public async Task <MessageResponse> UpdateAsync(long id, UpdateLaunchRequest request)
 {
     return(await PutAsJsonAsync <MessageResponse, UpdateLaunchRequest>($"{ProjectName}/launch/{id}/update", request));
 }