diff --git a/src/main/java/com/spotify/docker/client/DefaultDockerClient.java b/src/main/java/com/spotify/docker/client/DefaultDockerClient.java index c342306c3..8dcab7b1b 100644 --- a/src/main/java/com/spotify/docker/client/DefaultDockerClient.java +++ b/src/main/java/com/spotify/docker/client/DefaultDockerClient.java @@ -2230,7 +2230,7 @@ public void removeNetwork(String networkId) throws DockerException, InterruptedE @Override public void connectToNetwork(String containerId, String networkId) throws DockerException, InterruptedException { - manageNetworkConnection(containerId, "connect", networkId); + connectToNetwork(networkId, NetworkConnection.builder().containerId(containerId).build()); } @Override @@ -2239,7 +2239,7 @@ public void connectToNetwork(String networkId, NetworkConnection networkConnecti final WebTarget resource = resource().path("networks").path(networkId).path("connect"); try { - request(POST, Response.class, resource, resource.request(APPLICATION_JSON_TYPE), + request(POST, String.class, resource, resource.request(APPLICATION_JSON_TYPE), Entity.json(networkConnection)); } catch (DockerRequestException e) { switch (e.status()) { @@ -2256,18 +2256,20 @@ public void connectToNetwork(String networkId, NetworkConnection networkConnecti @Override public void disconnectFromNetwork(String containerId, String networkId) throws DockerException, InterruptedException { - manageNetworkConnection(containerId, "disconnect", networkId); + disconnectFromNetwork(containerId, networkId, false); } - private void manageNetworkConnection(String containerId, String methodname, String networkId) - throws DockerException, InterruptedException { - final WebTarget resource = resource().path("networks").path(networkId).path(methodname); + @Override + public void disconnectFromNetwork(String containerId, String networkId, boolean force) + throws DockerException, InterruptedException { + final WebTarget resource = resource().path("networks").path(networkId).path("disconnect"); - final Map request = new HashMap<>(); + final Map request = new HashMap<>(); request.put("Container", containerId); + request.put("Force", force); try { - request(POST, Response.class, resource, resource.request(APPLICATION_JSON_TYPE), + request(POST, String.class, resource, resource.request(APPLICATION_JSON_TYPE), Entity.json(request)); } catch (DockerRequestException e) { switch (e.status()) { @@ -2844,5 +2846,4 @@ public DefaultDockerClient build() { return new DefaultDockerClient(this); } } - } diff --git a/src/main/java/com/spotify/docker/client/DockerClient.java b/src/main/java/com/spotify/docker/client/DockerClient.java index c83859149..f9ed267a0 100644 --- a/src/main/java/com/spotify/docker/client/DockerClient.java +++ b/src/main/java/com/spotify/docker/client/DockerClient.java @@ -1947,6 +1947,19 @@ void connectToNetwork(String networkId, NetworkConnection networkConnection) void disconnectFromNetwork(String containerId, String networkId) throws DockerException, InterruptedException; + /** + * Disconnects a docker container to a network. + * + * @param containerId The id of the container to disconnect. + * @param networkId The id of the network to disconnect. + * @param force Force the container to disconnect from the network. + * @throws NotFoundException if either container or network is not found (404) + * @throws DockerException if a server error occurred (500) + * @throws InterruptedException If the thread is interrupted + */ + void disconnectFromNetwork(String containerId, String networkId, boolean force) + throws DockerException, InterruptedException; + /** * Closes any and all underlying connections to docker, and release resources. */