/// <summary> /// Expected return error code: /// 200 no error /// 404 No such exec instance /// 409 Container is stopped or paused /// </summary> internal async Task StartContainerExecAsync( string containerExecId, TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken)) { var requestPath = $"exec/{containerExecId}/start"; var containerExecConfig = new ContainerExecConfig() { Detach = true }; var requestContent = JsonRequestContent.GetContent(containerExecConfig); var response = await this.client.MakeRequestAsync( HttpMethod.Post, requestPath, null, requestContent, timeout).ConfigureAwait(false); if (response.StatusCode != HttpStatusCode.OK) { throw new ContainerApiException(response.StatusCode, response.Body); } }
/// <summary> /// Expected return error code: /// 200 No error /// 403 Operation not supported for swarm scoped networks /// 404 Network or container not found /// 500 server error /// </summary> internal async Task ConnectNetworkAsync( string networkIdOrName, NetworkConnectConfig connectConfig, TimeSpan timeout) { var requestPath = $"networks/{networkIdOrName}/connect"; var requestContent = JsonRequestContent.GetContent(connectConfig); var response = await this.client.MakeRequestAsync( HttpMethod.Post, requestPath, null, requestContent, timeout).ConfigureAwait(false); if (response.StatusCode != HttpStatusCode.OK) { throw new ContainerApiException(response.StatusCode, response.Body); } }
/// <summary> /// Expected return error code: /// 201 The volume was created successfully /// 500 server error /// </summary> internal async Task CreateVolumeAsync( VolumeConfig volumeConfig, TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken)) { var requestPath = "volumes/create"; var requestContent = JsonRequestContent.GetContent(volumeConfig); var response = await this.client.MakeRequestAsync( HttpMethod.Post, requestPath, null, requestContent, timeout).ConfigureAwait(false); if (response.StatusCode != HttpStatusCode.Created) { throw new ContainerApiException(response.StatusCode, response.Body); } }
/// <summary> /// Expected return error code: /// 201 No error /// 403 Operation not supported for pre-defined networks /// 404 plugin not found /// 500 server error /// </summary> internal async Task <NetworkCreateResponse> CreateNetworkAsync( NetworkCreateConfig createConfig, TimeSpan timeout) { var requestPath = "networks/create"; var requestContent = JsonRequestContent.GetContent(createConfig); var response = await this.client.MakeRequestAsync( HttpMethod.Post, requestPath, null, requestContent, timeout).ConfigureAwait(false); if (response.StatusCode != HttpStatusCode.Created) { throw new ContainerApiException(response.StatusCode, response.Body); } return(ContainerServiceClient.JsonSerializer.DeserializeObject <NetworkCreateResponse>(response.Body)); }
/// <summary> /// Expected return error code: /// 201 Container created successfully /// 400 bad parameter /// 404 no such container /// 406 impossible to attach /// 409 conflict /// 500 server error /// </summary> internal async Task <CreateContainerResponse> CreateContainerAsync( string containerName, ContainerConfig containerConfig, TimeSpan timeout) { var requestPath = "containers/create"; var queryString = $"name={containerName}"; var requestContent = JsonRequestContent.GetContent(containerConfig); var response = await this.client.MakeRequestAsync( HttpMethod.Post, requestPath, queryString, requestContent, timeout).ConfigureAwait(false); if (response.StatusCode != HttpStatusCode.Created) { throw new ContainerApiException(response.StatusCode, response.Body); } return(ContainerServiceClient.JsonSerializer.DeserializeObject <CreateContainerResponse>(response.Body)); }
/// <summary> /// Expected return error code: /// 201 no error /// 404 no such container /// 409 container is paused /// 500 server error /// </summary> internal async Task <CreateContainerExecResponse> CreateContainerExecAsync( string containerIdOrName, ContainerExecConfig containerExecConfig, TimeSpan timeout, CancellationToken cancellationToken = default(CancellationToken)) { var requestPath = $"containers/{containerIdOrName}/exec"; var requestContent = JsonRequestContent.GetContent(containerExecConfig); var response = await this.client.MakeRequestAsync( HttpMethod.Post, requestPath, null, requestContent, timeout).ConfigureAwait(false); if (response.StatusCode != HttpStatusCode.Created) { throw new ContainerApiException(response.StatusCode, response.Body); } return(ContainerServiceClient.JsonSerializer.DeserializeObject <CreateContainerExecResponse>(response.Body)); }