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)); }