From 8a6441ce95d3a9137d2eca5bba4be8d50451b48a Mon Sep 17 00:00:00 2001 From: Ritesh Patel Date: Mon, 14 Jul 2014 10:01:49 -0700 Subject: [PATCH 1/4] Fixed issue with StartContainerCmd The accept header was being set incorrectly to text instead of json. Also added a defensive null check in JsonClientFilter. --- .../com/github/dockerjava/client/command/StartContainerCmd.java | 2 +- .../com/github/dockerjava/client/utils/JsonClientFilter.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/dockerjava/client/command/StartContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/StartContainerCmd.java index 9cdc9a637..395fa8d5d 100644 --- a/src/main/java/com/github/dockerjava/client/command/StartContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/StartContainerCmd.java @@ -88,7 +88,7 @@ protected Void impl() throws DockerException { try { LOGGER.trace("POST: {}", webResource); - Builder builder = webResource.accept(MediaType.TEXT_PLAIN); + Builder builder = webResource.accept(MediaType.APPLICATION_JSON); if (startContainerConfig != null) { builder.type(MediaType.APPLICATION_JSON).post(startContainerConfig); } else { diff --git a/src/main/java/com/github/dockerjava/client/utils/JsonClientFilter.java b/src/main/java/com/github/dockerjava/client/utils/JsonClientFilter.java index 89633b527..a29255d3c 100644 --- a/src/main/java/com/github/dockerjava/client/utils/JsonClientFilter.java +++ b/src/main/java/com/github/dockerjava/client/utils/JsonClientFilter.java @@ -16,7 +16,7 @@ public ClientResponse handle(ClientRequest cr) { // Call the next filter ClientResponse resp = getNext().handle(cr); String respContentType = resp.getHeaders().getFirst("Content-Type"); - if (respContentType.startsWith("text/plain")) { + if (respContentType != null && respContentType.startsWith("text/plain")) { String newContentType = "application/json" + respContentType.substring(10); resp.getHeaders().putSingle("Content-Type", newContentType); } From c9eec27e86791bd3c592de6ccf321d24cf4ba11d Mon Sep 17 00:00:00 2001 From: Ritesh Patel Date: Mon, 14 Jul 2014 19:28:50 -0700 Subject: [PATCH 2/4] Fixed startContainer use cases Using top command instead of true so that the container keeps running and returns the valid state --- .../dockerjava/client/command/StartContainerCmdTest.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/github/dockerjava/client/command/StartContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/StartContainerCmdTest.java index 1a4a535e5..8734f736a 100644 --- a/src/test/java/com/github/dockerjava/client/command/StartContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/StartContainerCmdTest.java @@ -82,6 +82,7 @@ public void startContainerWithVolumes() throws DockerException { containerInspectResponse = dockerClient.inspectContainerCmd(container .getId()).exec(); + assertThat(Arrays.asList(containerInspectResponse.getVolumes()), contains(volume1, volume2)); @@ -99,7 +100,7 @@ public void startContainerWithPortBindings() throws DockerException { ContainerCreateResponse container = dockerClient .createContainerCmd("busybox") - .withCmd("true").withExposedPorts(tcp22, tcp23).exec(); + .withCmd("top").withExposedPorts(tcp22, tcp23).exec(); LOG.info("Created container {}", container.toString()); @@ -116,6 +117,8 @@ public void startContainerWithPortBindings() throws DockerException { containerInspectResponse = dockerClient.inspectContainerCmd(container .getId()).exec(); + + assertThat(containerInspectResponse.getState().isRunning(), is(true)); assertThat(Arrays.asList(containerInspectResponse.getConfig().getExposedPorts()), contains(tcp22, tcp23)); @@ -133,7 +136,7 @@ public void startContainerWithPortBindings() throws DockerException { public void startContainer() throws DockerException { ContainerCreateResponse container = dockerClient - .createContainerCmd("busybox").withCmd(new String[] { "true" }).exec(); + .createContainerCmd("busybox").withCmd(new String[] { "top" }).exec(); LOG.info("Created container {}", container.toString()); assertThat(container.getId(), not(isEmptyString())); From c95c9675b86cbb5841a1430e0d1669eedca7e2b8 Mon Sep 17 00:00:00 2001 From: Ritesh Patel Date: Mon, 14 Jul 2014 10:01:49 -0700 Subject: [PATCH 3/4] Fixed issue with StartContainerCmd The accept header was being set incorrectly to text instead of json. Also added a defensive null check in JsonClientFilter. --- .../com/github/dockerjava/client/command/StartContainerCmd.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/github/dockerjava/client/command/StartContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/StartContainerCmd.java index b78109e51..3a3eebb38 100644 --- a/src/main/java/com/github/dockerjava/client/command/StartContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/StartContainerCmd.java @@ -97,7 +97,7 @@ protected Void impl() throws DockerException { try { LOGGER.trace("POST: {}", webResource); - Builder builder = webResource.accept(MediaType.TEXT_PLAIN); + Builder builder = webResource.accept(MediaType.APPLICATION_JSON); if (startContainerConfig != null) { builder.type(MediaType.APPLICATION_JSON).post(startContainerConfig); } else { From 622071e4bee343187ee5199fea30516c8d88eba1 Mon Sep 17 00:00:00 2001 From: Ritesh Patel Date: Mon, 14 Jul 2014 22:14:38 -0700 Subject: [PATCH 4/4] Merge branch 'master' of https://github.com/NirmataOSS/docker-java Conflicts: src/test/java/com/github/dockerjava/client/command/StartContainerCmdTest .java --- .../dockerjava/client/command/StartContainerCmdTest.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/github/dockerjava/client/command/StartContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/StartContainerCmdTest.java index 052e64f48..4a8b9abcc 100644 --- a/src/test/java/com/github/dockerjava/client/command/StartContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/StartContainerCmdTest.java @@ -83,6 +83,7 @@ public void startContainerWithVolumes() throws DockerException { containerInspectResponse = dockerClient.inspectContainerCmd(container .getId()).exec(); + assertThat(Arrays.asList(containerInspectResponse.getVolumes()), contains(volume1, volume2)); @@ -100,7 +101,7 @@ public void startContainerWithPortBindings() throws DockerException { ContainerCreateResponse container = dockerClient .createContainerCmd("busybox") - .withCmd("true").withExposedPorts(tcp22, tcp23).exec(); + .withCmd("top").withExposedPorts(tcp22, tcp23).exec(); LOG.info("Created container {}", container.toString()); @@ -117,6 +118,8 @@ public void startContainerWithPortBindings() throws DockerException { containerInspectResponse = dockerClient.inspectContainerCmd(container .getId()).exec(); + + assertThat(containerInspectResponse.getState().isRunning(), is(true)); assertThat(Arrays.asList(containerInspectResponse.getConfig().getExposedPorts()), contains(tcp22, tcp23)); @@ -190,7 +193,7 @@ public void startContainerWithLinking() throws DockerException { public void startContainer() throws DockerException { ContainerCreateResponse container = dockerClient - .createContainerCmd("busybox").withCmd("true").exec(); + .createContainerCmd("busybox").withCmd(new String[] { "top" }).exec(); LOG.info("Created container {}", container.toString()); assertThat(container.getId(), not(isEmptyString()));