public void OperationAggregatorUsingParallel() { var expected = new BatchOperationResponse { Results = new List <OperationResult> { new OperationResult { Value = "1" } } }; var request = new BatchOperationRequest { Operations = CreateOperations(ProcessingType.Parallel), Arguments = new List <OperationArgument> { new OperationArgument { Name = "Operation Args", Value = "1" } } }; var result = _operationAggregator.Execute(request); Assert.AreEqual(expected.Results.First().Value, result.Results.First().Value); }
/// <summary> /// Parse response body as a resource model /// </summary> /// <typeparam name="T"></typeparam> /// <param name="response"></param> /// <returns></returns> public T ParseObject <T>(BatchOperationResponse response) { if (response.Status >= 200 && response.Status < 300) { using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(response.Entity))) { return(JSON_SERIALIZER.ReadObject <T>(stream)); } } else { return(default(T)); } }
/// <summary> /// Parse error /// </summary> /// <param name="response"></param> /// <returns></returns> public Error ParseError(BatchOperationResponse response) { if (response.Status >= 400) { using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(response.Entity))) { return(JSON_SERIALIZER.ReadObject <Error>(stream)); } } else { return(null); } }
private async Task <BatchOperationResponse> DeleteContainersWithFiltersAsync( DockerFilterCollection filters, bool ignoreEmptyResult, bool force, bool removeVolumes ) { var response = new BatchOperationResponse(_logger); filters.RequiresLabel(DockerLabelHelper.CreatedByTriceratopsLabel); using (_logger.BeginScope("Using filters to delete containers")) { filters.LogContents(_logger); } try { using var dockerClient = CreateDockerClient(); IList <ContainerListResponse> existingContainers = null; using (_logger.BeginScope("Finding existing containers to delete")) { existingContainers = await dockerClient.Containers.ListContainersAsync(new ContainersListParameters { Filters = filters.ToDictionary() }); if (!existingContainers.Any()) { if (ignoreEmptyResult) { _logger.LogInformation("The filter parameters supplied matched no containers, " + "but empty result is being ignored."); return(response.IsSuccessful()); } return(response .LogWarning("The filter parameters supplied matched no containers") .HasFailed()); } _logger.LogInformation($"Found {existingContainers.Count} containers to delete"); } foreach (var container in existingContainers) { using (_logger.BeginScope($"Deleting container {container.ID}")) { try { await dockerClient.Containers.RemoveContainerAsync(container.ID, new ContainerRemoveParameters { Force = force, RemoveVolumes = removeVolumes }); response.AddSuccessfulContainerId(container.ID); _logger.LogInformation("Container deleted"); } catch (Exception exception) { response .LogException(exception, $"Unable to delete container {container.ID}") .AddFailedContainerId(container.ID); } } } if (response.SuccessCount == response.TotalOperations) { return(response.IsSuccessful()); } return(response .LogError($"Expected to delete {response.TotalOperations}, only deleted {response.SuccessCount}") .HasFailed()); } catch (Exception exception) { response .LogException(exception, "Unable to delete containers") .HasFailed(); } return(response); }