コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        /// <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);
            }
        }
コード例 #3
0
        /// <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);
            }
        }
コード例 #4
0
        /// <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));
        }
コード例 #5
0
        /// <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));
        }
コード例 #6
0
        /// <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));
        }