public async Task <TemporaryContainerResponse <TemporaryStorageContainer> > GetStorageContainerAsync(Server server) { var existingContainer = _temporaryContainerManager.GetContainer <TemporaryStorageContainer>(server.Id, true); if (existingContainer != null) { return(new TemporaryContainerResponse <TemporaryStorageContainer>(existingContainer)); } var parameterBuilder = CreateContainerParametersBuilder.CreateStorageServer(server); var createResponse = await _clientManager.CreateContainerAsync(parameterBuilder); if (!createResponse.Success) { return(new TemporaryContainerResponse <TemporaryStorageContainer>(createResponse)); } var startResponse = await _clientManager.StartContainerAsync(createResponse.ContainerId); if (!startResponse.Success) { return(new TemporaryContainerResponse <TemporaryStorageContainer>(startResponse)); } var httpClient = CoreHttpClient.Create(_logger, $"http://{parameterBuilder.CreateParameters().Name}"); var container = new TemporaryStorageContainer(httpClient, server.Id, createResponse.ContainerId); _temporaryContainerManager.AddContainer(container); await DockerRetryHelper.WaitForStorageContainerAsync(container, _logger); return(new TemporaryContainerResponse <TemporaryStorageContainer>(container)); }
public async Task <DockerOperationResponse> StopContainerAsync(string containerId, bool waitForStop = false) { var response = await _clientManager.StopContainerAsync(containerId); if (!response.Success) { return(new DockerOperationResponse(response)); } if (waitForStop) { if (!await DockerRetryHelper.WaitForContainerToStopAsync(containerId, _clientManager, _logger)) { response.LogWarning($"Timed out waiting for {containerId} to start, it may have stalled."); } } return(new DockerOperationResponse(response)); }