public async Task RunAsync() { var count = 0; var maxWorkers = Math.Max(1, MaxParallelWorkers) - 1; var maxSize = Math.Max(1024, MaxBlobSizeForBuffering); Log?.Invoke($"Using {maxWorkers + 1} workers and buffering blobs smaller than {(maxSize / 1024.0):F0} KB", 1); var buffers = new MemoryStream[maxWorkers]; for (int i = 0; i < maxWorkers; i++) { buffers[i] = new MemoryStream(maxSize); } var sw = Stopwatch.StartNew(); foreach (var container in BlobClient.ListContainers()) { if (ContainerFilter?.Invoke(container) == false) { continue; } count += await ProcessContainerAsync(container, buffers, maxSize); } sw.Stop(); Log?.Invoke($"Archived {count} files in {sw.Elapsed.TotalSeconds:F0} seconds", 0); }
public static IEntityFiltrator <AlbumEntity> ToEntity(this IFiltrator <Album> filter) { if (filter is ContainerFilter) { ContainerFilter filterImpl = ((ContainerFilter)filter); return(new ContainerEntityFilter(filterImpl.Balance, filterImpl.Name)); } return(new ContainerEntityFilter(0, string.Empty)); }
public async Task <IList <Container> > GetContainers(ContainerFilter parameters) { var containers = await this.Client.Containers.ListContainersAsync(parameters); return(this.Mapper.Map <IList <Container> >(containers)); }
private async Task <List <string> > ListContainers(ContainerState containerState, ContainerFilter containerFilter, string param) { if (this.DockerClient == null) { return(null); } IDictionary <string, IDictionary <string, bool> > filter = new Dictionary <string, IDictionary <string, bool> >(); if ((containerState & ContainerState.Exited) == ContainerState.Exited) { filter.Add("status", new Dictionary <string, bool>() { { "exited", true } }); filter.Add("name", new Dictionary <string, bool>() { { param, true } }); } if ((containerState & ContainerState.Created) == ContainerState.Created) { bool ok = filter.TryGetValue("status", out IDictionary <string, bool> f); if (ok) { f.Add("created", true); } else { filter.Add("status", new Dictionary <string, bool>() { { "created", true } }); filter.Add("name", new Dictionary <string, bool>() { { param, true } }); } } else { if (containerFilter == ContainerFilter.Name) { filter.Add("name", new Dictionary <string, bool>() { { param, true } }); } else if (containerFilter == ContainerFilter.Network) { filter.Add("network", new Dictionary <string, bool>() { { param, true } }); } } Task <IList <ContainerListResponse> > responsesTask = this.DockerClient.Containers.ListContainersAsync ( new ContainersListParameters() { Filters = filter } ); responsesTask.Wait(); IList <ContainerListResponse> responses = await responsesTask; List <string> containerIds = new List <string>(); foreach (ContainerListResponse response in responses) { containerIds.Add(response.ID); } return(containerIds); }