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