From 134f241fa1c44a265d1525cb61906da1d65d3d4f Mon Sep 17 00:00:00 2001 From: Matt Fulgo Date: Thu, 31 Jul 2014 11:31:05 -0400 Subject: [PATCH 01/13] Renames Response objects to match their assoc cmds The Command and Response objects should have names that follow the same form. I've arbitrarily decided on VerbNoun. Since this is an API-breaking change and we're in pre-1.0.0, I've bumped the minor version from 9 to 10. --- pom.xml | 4 +- .../client/command/CreateContainerCmd.java | 10 +- .../client/command/ImportImageCmd.java | 8 +- .../client/command/InspectContainerCmd.java | 8 +- .../client/command/InspectImageCmd.java | 8 +- .../client/command/TopContainerCmd.java | 8 +- ...onse.java => CreateContainerResponse.java} | 4 +- ...Response.java => CreateImageResponse.java} | 4 +- ...nse.java => InspectContainerResponse.java} | 42 ++--- ...esponse.java => InspectImageResponse.java} | 24 +-- ...esponse.java => TopContainerResponse.java} | 18 +-- .../dockerjava/client/DockerClientTest.java | 16 +- .../client/command/BuildImageCmdTest.java | 52 +++---- .../client/command/CommitCmdTest.java | 22 +-- .../client/command/ContainerDiffCmdTest.java | 4 +- .../command/CreateContainerCmdTest.java | 68 ++++----- .../client/command/KillContainerCmdTest.java | 14 +- .../client/command/ListContainersCmdTest.java | 36 ++--- .../client/command/LogContainerCmdTest.java | 6 +- .../client/command/PullImageCmdTest.java | 14 +- .../client/command/PushImageCmdTest.java | 16 +- .../command/RemoveContainerCmdTest.java | 4 +- .../client/command/RemoveImageCmdTest.java | 4 +- .../command/RestartContainerCmdTest.java | 20 +-- .../client/command/StartContainerCmdTest.java | 144 +++++++++--------- .../client/command/StopContainerCmdTest.java | 14 +- .../client/command/WaitContainerCmdTest.java | 16 +- 27 files changed, 289 insertions(+), 299 deletions(-) rename src/main/java/com/github/dockerjava/client/model/{ContainerCreateResponse.java => CreateContainerResponse.java} (91%) rename src/main/java/com/github/dockerjava/client/model/{ImageCreateResponse.java => CreateImageResponse.java} (87%) rename src/main/java/com/github/dockerjava/client/model/{ContainerInspectResponse.java => InspectContainerResponse.java} (97%) rename src/main/java/com/github/dockerjava/client/model/{ImageInspectResponse.java => InspectImageResponse.java} (94%) rename src/main/java/com/github/dockerjava/client/model/{ContainerTopResponse.java => TopContainerResponse.java} (90%) diff --git a/pom.xml b/pom.xml index 26711f680..4d1689804 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ com.github.docker-java docker-java jar - 0.9.2-SNAPSHOT + 0.10.0-SNAPSHOT docker-java https://github.com/docker-java/docker-java @@ -147,7 +147,7 @@ jul-to-slf4j ${slf4j-api.version} - + com.google.guava guava diff --git a/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java index 2947cf68b..0d4c6b2aa 100644 --- a/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java @@ -3,12 +3,12 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; +import com.github.dockerjava.client.model.CreateContainerResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.dockerjava.client.DockerException; import com.github.dockerjava.client.NotFoundException; -import com.github.dockerjava.client.model.ContainerCreateResponse; import com.github.dockerjava.client.model.CreateContainerConfig; import com.github.dockerjava.client.model.ExposedPort; import com.github.dockerjava.client.model.Volume; @@ -23,7 +23,7 @@ * Creates a new container. * */ -public class CreateContainerCmd extends AbstrDockerCmd { +public class CreateContainerCmd extends AbstrDockerCmd { private static final Logger LOGGER = LoggerFactory.getLogger(CreateContainerCmd.class); @@ -68,7 +68,7 @@ public CreateContainerCmd withVolumesFrom(String... volumesFrom) { this.containerCreateConfig.withVolumesFrom(volumesFrom); return this; } - + public CreateContainerCmd withEnv(String... env) { Preconditions.checkNotNull(env, "env was not specified"); this.containerCreateConfig.withEnv(env); @@ -102,7 +102,7 @@ public String toString() { .toString(); } - protected ContainerCreateResponse impl() { + protected CreateContainerResponse impl() { MultivaluedMap params = new MultivaluedMapImpl(); if (name != null) { params.add("name", name); @@ -113,7 +113,7 @@ protected ContainerCreateResponse impl() { LOGGER.trace("POST: {} ", webResource); return webResource.accept(MediaType.APPLICATION_JSON) .type(MediaType.APPLICATION_JSON) - .post(ContainerCreateResponse.class, containerCreateConfig); + .post(CreateContainerResponse.class, containerCreateConfig); } catch (UniformInterfaceException exception) { if (exception.getResponse().getStatus() == 404) { throw new NotFoundException(String.format("%s is an unrecognized image. Please pull the image first.", containerCreateConfig.getImage())); diff --git a/src/main/java/com/github/dockerjava/client/command/ImportImageCmd.java b/src/main/java/com/github/dockerjava/client/command/ImportImageCmd.java index 9d02d5926..cefaa347d 100644 --- a/src/main/java/com/github/dockerjava/client/command/ImportImageCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/ImportImageCmd.java @@ -5,11 +5,11 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; +import com.github.dockerjava.client.model.CreateImageResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ImageCreateResponse; import com.google.common.base.Preconditions; import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.api.client.WebResource; @@ -18,7 +18,7 @@ /** * Create an image by importing the given stream of a tar file. */ -public class ImportImageCmd extends AbstrDockerCmd { +public class ImportImageCmd extends AbstrDockerCmd { private static final Logger LOGGER = LoggerFactory.getLogger(ImportImageCmd.class); @@ -78,7 +78,7 @@ public String toString() { .toString(); } - protected ImageCreateResponse impl() { + protected CreateImageResponse impl() { MultivaluedMap params = new MultivaluedMapImpl(); params.add("repo", repository); params.add("tag", tag); @@ -89,7 +89,7 @@ protected ImageCreateResponse impl() { try { LOGGER.trace("POST: {}", webResource); return webResource.accept(MediaType.APPLICATION_OCTET_STREAM_TYPE) - .post(ImageCreateResponse.class, imageStream); + .post(CreateImageResponse.class, imageStream); } catch (UniformInterfaceException exception) { if (exception.getResponse().getStatus() == 500) { diff --git a/src/main/java/com/github/dockerjava/client/command/InspectContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/InspectContainerCmd.java index a5e40dfe9..e82847933 100644 --- a/src/main/java/com/github/dockerjava/client/command/InspectContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/InspectContainerCmd.java @@ -2,12 +2,12 @@ import javax.ws.rs.core.MediaType; +import com.github.dockerjava.client.model.InspectContainerResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.dockerjava.client.DockerException; import com.github.dockerjava.client.NotFoundException; -import com.github.dockerjava.client.model.ContainerInspectResponse; import com.google.common.base.Preconditions; import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.api.client.WebResource; @@ -15,7 +15,7 @@ /** * Inspect the details of a container. */ -public class InspectContainerCmd extends AbstrDockerCmd { +public class InspectContainerCmd extends AbstrDockerCmd { private static final Logger LOGGER = LoggerFactory.getLogger(InspectContainerCmd.class); @@ -40,12 +40,12 @@ public String toString() { return "inspect " + containerId; } - protected ContainerInspectResponse impl() throws DockerException { + protected InspectContainerResponse impl() throws DockerException { WebResource webResource = baseResource.path(String.format("/containers/%s/json", containerId)); try { LOGGER.trace("GET: {}", webResource); - return webResource.accept(MediaType.APPLICATION_JSON).get(ContainerInspectResponse.class); + return webResource.accept(MediaType.APPLICATION_JSON).get(InspectContainerResponse.class); } catch (UniformInterfaceException exception) { if (exception.getResponse().getStatus() == 404) { throw new NotFoundException(String.format("No such container %s", containerId)); diff --git a/src/main/java/com/github/dockerjava/client/command/InspectImageCmd.java b/src/main/java/com/github/dockerjava/client/command/InspectImageCmd.java index 85df63b80..f414e1451 100644 --- a/src/main/java/com/github/dockerjava/client/command/InspectImageCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/InspectImageCmd.java @@ -7,7 +7,7 @@ import com.github.dockerjava.client.DockerException; import com.github.dockerjava.client.NotFoundException; -import com.github.dockerjava.client.model.ImageInspectResponse; +import com.github.dockerjava.client.model.InspectImageResponse; import com.google.common.base.Preconditions; import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.api.client.WebResource; @@ -16,7 +16,7 @@ /** * Inspect the details of an image. */ -public class InspectImageCmd extends AbstrDockerCmd { +public class InspectImageCmd extends AbstrDockerCmd { private static final Logger LOGGER = LoggerFactory.getLogger(InspectImageCmd.class); @@ -41,12 +41,12 @@ public String toString() { return "inspect " + imageId; } - protected ImageInspectResponse impl() { + protected InspectImageResponse impl() { WebResource webResource = baseResource.path(String.format("/images/%s/json", imageId)); try { LOGGER.trace("GET: {}", webResource); - return webResource.accept(MediaType.APPLICATION_JSON).get(ImageInspectResponse.class); + return webResource.accept(MediaType.APPLICATION_JSON).get(InspectImageResponse.class); } catch (UniformInterfaceException exception) { if (exception.getResponse().getStatus() == 404) { throw new NotFoundException(String.format("No such image %s", imageId)); diff --git a/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java index 8794a2d75..d863dd563 100644 --- a/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java @@ -2,13 +2,13 @@ import javax.ws.rs.core.MediaType; +import com.github.dockerjava.client.model.TopContainerResponse; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.dockerjava.client.DockerException; import com.github.dockerjava.client.NotFoundException; -import com.github.dockerjava.client.model.ContainerTopResponse; import com.google.common.base.Preconditions; import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.api.client.WebResource; @@ -18,7 +18,7 @@ * @author marcus * */ -public class TopContainerCmd extends AbstrDockerCmd { +public class TopContainerCmd extends AbstrDockerCmd { private static final Logger LOGGER = LoggerFactory.getLogger(TopContainerCmd.class); @@ -59,7 +59,7 @@ public String toString() { .toString(); } - protected ContainerTopResponse impl() throws DockerException { + protected TopContainerResponse impl() throws DockerException { WebResource webResource = baseResource.path(String.format("/containers/%s/top", containerId)); if(!StringUtils.isEmpty(psArgs)) @@ -67,7 +67,7 @@ protected ContainerTopResponse impl() throws DockerException { try { LOGGER.trace("GET: {}", webResource); - return webResource.accept(MediaType.APPLICATION_JSON).get(ContainerTopResponse.class); + return webResource.accept(MediaType.APPLICATION_JSON).get(TopContainerResponse.class); } catch (UniformInterfaceException exception) { if (exception.getResponse().getStatus() == 404) { throw new NotFoundException(String.format("No such container %s", containerId)); diff --git a/src/main/java/com/github/dockerjava/client/model/ContainerCreateResponse.java b/src/main/java/com/github/dockerjava/client/model/CreateContainerResponse.java similarity index 91% rename from src/main/java/com/github/dockerjava/client/model/ContainerCreateResponse.java rename to src/main/java/com/github/dockerjava/client/model/CreateContainerResponse.java index d912ecc19..ab1e0a58f 100644 --- a/src/main/java/com/github/dockerjava/client/model/ContainerCreateResponse.java +++ b/src/main/java/com/github/dockerjava/client/model/CreateContainerResponse.java @@ -11,7 +11,7 @@ * */ @JsonIgnoreProperties(ignoreUnknown = true) -public class ContainerCreateResponse { +public class CreateContainerResponse { @JsonProperty("Id") private String id; @@ -37,7 +37,7 @@ public void setWarnings(String[] warnings) { @Override public String toString() { - return "ContainerCreateResponse{" + + return "CreateContainerResponse{" + "id='" + id + '\'' + ", warnings=" + Arrays.toString(warnings) + '}'; diff --git a/src/main/java/com/github/dockerjava/client/model/ImageCreateResponse.java b/src/main/java/com/github/dockerjava/client/model/CreateImageResponse.java similarity index 87% rename from src/main/java/com/github/dockerjava/client/model/ImageCreateResponse.java rename to src/main/java/com/github/dockerjava/client/model/CreateImageResponse.java index d23aff500..30aa5fc08 100644 --- a/src/main/java/com/github/dockerjava/client/model/ImageCreateResponse.java +++ b/src/main/java/com/github/dockerjava/client/model/CreateImageResponse.java @@ -10,7 +10,7 @@ * */ @JsonIgnoreProperties(ignoreUnknown = true) -public class ImageCreateResponse { +public class CreateImageResponse { @JsonProperty("status") private String id; @@ -23,7 +23,7 @@ public String getId() { @Override public String toString() { - return "ContainerCreateResponse{" + + return "CreateImageResponse{" + "id='" + id + '\'' + '}'; } diff --git a/src/main/java/com/github/dockerjava/client/model/ContainerInspectResponse.java b/src/main/java/com/github/dockerjava/client/model/InspectContainerResponse.java similarity index 97% rename from src/main/java/com/github/dockerjava/client/model/ContainerInspectResponse.java rename to src/main/java/com/github/dockerjava/client/model/InspectContainerResponse.java index 7072037cf..53824430b 100644 --- a/src/main/java/com/github/dockerjava/client/model/ContainerInspectResponse.java +++ b/src/main/java/com/github/dockerjava/client/model/InspectContainerResponse.java @@ -14,7 +14,7 @@ * */ @JsonIgnoreProperties(ignoreUnknown = true) -public class ContainerInspectResponse { +public class InspectContainerResponse { @JsonProperty("Args") private String[] args; @@ -30,16 +30,16 @@ public class ContainerInspectResponse { @JsonProperty("ExecDriver") private String execDriver; - + @JsonProperty("HostConfig") private HostConfig hostConfig; @JsonProperty("HostnamePath") private String hostnamePath; - + @JsonProperty("HostsPath") private String hostsPath; - + @JsonProperty("Id") private String id; @@ -48,7 +48,7 @@ public class ContainerInspectResponse { @JsonProperty("MountLabel") private String mountLabel; - + @JsonProperty("Name") private String name; @@ -60,7 +60,7 @@ public class ContainerInspectResponse { @JsonProperty("ProcessLabel") private String processLabel; - + @JsonProperty("ResolvConfPath") private String resolvConfPath; @@ -84,7 +84,7 @@ public String getCreated() { public String getPath() { return path; } - + public String getProcessLabel() { return processLabel; } @@ -142,11 +142,11 @@ public String getDriver() { public HostConfig getHostConfig() { return hostConfig; } - + public String getExecDriver() { return execDriver; } - + public String getMountLabel() { return mountLabel; } @@ -160,7 +160,7 @@ public class NetworkSettings { @JsonProperty("Bridge") private String bridge; @JsonProperty("PortMapping") private Map> portMapping; @JsonProperty("Ports") private Ports ports; - + public String getIpAddress() { return ipAddress; } @@ -208,7 +208,7 @@ public class ContainerState { @JsonProperty("ExitCode") private int exitCode; @JsonProperty("StartedAt") private String startedAt; @JsonProperty("FinishedAt") private String finishedAt; - + public boolean isRunning() { return running; } @@ -245,44 +245,44 @@ public String toString() { '}'; } } - + @JsonIgnoreProperties(ignoreUnknown = true) public class HostConfig { @JsonProperty("Binds") private String[] binds; - + @JsonProperty("LxcConf") private LxcConf[] lxcConf; - + @JsonProperty("PortBindings") private Ports portBindings; - + @JsonProperty("PublishAllPorts") private boolean publishAllPorts; - + @JsonProperty("Privileged") private boolean privileged; - + @JsonProperty("Dns") private String dns; - + @JsonProperty("VolumesFrom") private String[] volumesFrom; @JsonProperty("ContainerIDFile") private String containerIDFile; - + @JsonProperty("DnsSearch") private String dnsSearch; - + // TODO: use Links class here? @JsonProperty("Links") private String[] links; @JsonProperty("NetworkMode") private String networkMode; - + public String[] getBinds() { return binds; } diff --git a/src/main/java/com/github/dockerjava/client/model/ImageInspectResponse.java b/src/main/java/com/github/dockerjava/client/model/InspectImageResponse.java similarity index 94% rename from src/main/java/com/github/dockerjava/client/model/ImageInspectResponse.java rename to src/main/java/com/github/dockerjava/client/model/InspectImageResponse.java index 64b872f37..b2c427116 100644 --- a/src/main/java/com/github/dockerjava/client/model/ImageInspectResponse.java +++ b/src/main/java/com/github/dockerjava/client/model/InspectImageResponse.java @@ -9,35 +9,35 @@ * */ @JsonIgnoreProperties(ignoreUnknown = true) -public class ImageInspectResponse { - +public class InspectImageResponse { + @JsonProperty("Architecture") private String arch; - + @JsonProperty("Author") private String author; - + @JsonProperty("Comment") private String comment; - + @JsonProperty("Config") private ContainerConfig config; - + @JsonProperty("Container") private String container; - + @JsonProperty("ContainerConfig") private ContainerConfig containerConfig; - + @JsonProperty("Created") private String created; - + @JsonProperty("DockerVersion") private String dockerVersion; @JsonProperty("Id") private String id; - + @JsonProperty("Os") private String os; @@ -45,7 +45,7 @@ public class ImageInspectResponse { private String parent; @JsonProperty("Size") - private long size; + private long size; public String getId() { return id; @@ -97,7 +97,7 @@ public String getOs() { @Override public String toString() { - return "ImageInspectResponse{" + + return "InspectImageResponse{" + "id='" + id + '\'' + ", parent='" + parent + '\'' + ", created='" + created + '\'' + diff --git a/src/main/java/com/github/dockerjava/client/model/ContainerTopResponse.java b/src/main/java/com/github/dockerjava/client/model/TopContainerResponse.java similarity index 90% rename from src/main/java/com/github/dockerjava/client/model/ContainerTopResponse.java rename to src/main/java/com/github/dockerjava/client/model/TopContainerResponse.java index 080bccc25..a258d6020 100644 --- a/src/main/java/com/github/dockerjava/client/model/ContainerTopResponse.java +++ b/src/main/java/com/github/dockerjava/client/model/TopContainerResponse.java @@ -5,39 +5,39 @@ import com.google.common.base.Joiner; /** - * + * * @author marcus - * + * */ @JsonIgnoreProperties(ignoreUnknown = true) -public class ContainerTopResponse { +public class TopContainerResponse { @JsonProperty("Titles") private String[] titles; @JsonProperty("Processes") private String[][] processes; - + public String[] getTitles() { return titles; } - + public String[][] getProcesses() { return processes; } - + @Override public String toString() { Joiner joiner = Joiner.on("; ").skipNulls(); - + StringBuffer buffer = new StringBuffer(); buffer.append("["); for(String[] fields: processes) { buffer.append("[" + joiner.join(fields) + "]"); } buffer.append("]"); - - return "ContainerTopResponse{" + + + return "TopContainerResponse{" + "titles=" + joiner.join(titles) + ", processes=" + buffer.toString() + '}'; diff --git a/src/test/java/com/github/dockerjava/client/DockerClientTest.java b/src/test/java/com/github/dockerjava/client/DockerClientTest.java index 79f651c34..22843ac48 100644 --- a/src/test/java/com/github/dockerjava/client/DockerClientTest.java +++ b/src/test/java/com/github/dockerjava/client/DockerClientTest.java @@ -5,6 +5,7 @@ import java.lang.reflect.Method; +import com.github.dockerjava.client.model.CreateContainerResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.ITestResult; @@ -14,12 +15,9 @@ import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; -import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ContainerCreateResponse; - /** * Unit test for DockerClient. - * + * * @author Konstantin Pelykh (kpelykh@gmail.com) */ public class DockerClientTest extends AbstractDockerClientTest { @@ -45,7 +43,7 @@ public void afterMethod(ITestResult result) { super.afterMethod(result); } - + @Test public void testRunShlex() throws DockerException { @@ -59,7 +57,7 @@ public void testRunShlex() throws DockerException { for (String command : commands) { LOG.info("Running command: [{}]", command); - ContainerCreateResponse container = dockerClient + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withCmd(commands).exec(); dockerClient.startContainerCmd(container.getId()); tmpContainers.add(container.getId()); @@ -67,6 +65,6 @@ public void testRunShlex() throws DockerException { assertThat(exitcode, equalTo(0)); } } - - -} \ No newline at end of file + + +} diff --git a/src/test/java/com/github/dockerjava/client/command/BuildImageCmdTest.java b/src/test/java/com/github/dockerjava/client/command/BuildImageCmdTest.java index 428604277..74a7423ca 100644 --- a/src/test/java/com/github/dockerjava/client/command/BuildImageCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/BuildImageCmdTest.java @@ -12,9 +12,9 @@ import java.io.IOException; import java.io.StringWriter; import java.lang.reflect.Method; -import java.net.URI; -import java.net.URISyntaxException; +import com.github.dockerjava.client.model.CreateContainerResponse; +import com.github.dockerjava.client.model.InspectImageResponse; import org.apache.commons.io.IOUtils; import org.apache.commons.io.LineIterator; import org.apache.commons.lang.StringUtils; @@ -27,9 +27,7 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ContainerCreateResponse; -import com.github.dockerjava.client.model.ContainerInspectResponse; -import com.github.dockerjava.client.model.ImageInspectResponse; +import com.github.dockerjava.client.model.InspectContainerResponse; import com.sun.jersey.api.client.ClientResponse; public class BuildImageCmdTest extends AbstractDockerClientTest { @@ -82,13 +80,13 @@ public void testNginxDockerfileBuilder() throws DockerException, String imageId = StringUtils.substringBetween(fullLog, "Successfully built ", "\\n\"}").trim(); - ImageInspectResponse imageInspectResponse = dockerClient + InspectImageResponse inspectImageResponse = dockerClient .inspectImageCmd(imageId).exec(); - assertThat(imageInspectResponse, not(nullValue())); - LOG.info("Image Inspect: {}", imageInspectResponse.toString()); - tmpImgs.add(imageInspectResponse.getId()); + assertThat(inspectImageResponse, not(nullValue())); + LOG.info("Image Inspect: {}", inspectImageResponse.toString()); + tmpImgs.add(inspectImageResponse.getId()); - assertThat(imageInspectResponse.getAuthor(), + assertThat(inspectImageResponse.getAuthor(), equalTo("Guillaume J. Charmes \"guillaume@dotcloud.com\"")); } @@ -115,7 +113,7 @@ public void testDockerBuilderAddFolder() throws DockerException, dockerfileBuild(baseDir, "Successfully executed testAddFolder.sh"); } - + private String dockerfileBuild(File baseDir, String expectedText) throws DockerException, IOException { @@ -143,7 +141,7 @@ private String dockerfileBuild(File baseDir, String expectedText) "Successfully built ", "\\n\"}").trim(); // Create container based on image - ContainerCreateResponse container = dockerClient.createContainerCmd( + CreateContainerResponse container = dockerClient.createContainerCmd( imageId).exec(); LOG.info("Created container: {}", container.toString()); @@ -162,8 +160,8 @@ private String dockerfileBuild(File baseDir, String expectedText) return container.getId(); } - - + + private ClientResponse logContainer(String containerId) { return dockerClient.logContainerCmd(containerId).withStdErr().withStdOut().exec(); } @@ -196,28 +194,28 @@ public void testNetCatDockerfileBuilder() throws DockerException, String imageId = StringUtils.substringBetween(fullLog, "Successfully built ", "\\n\"}").trim(); - ImageInspectResponse imageInspectResponse = dockerClient + InspectImageResponse inspectImageResponse = dockerClient .inspectImageCmd(imageId).exec(); - assertThat(imageInspectResponse, not(nullValue())); - assertThat(imageInspectResponse.getId(), not(nullValue())); - LOG.info("Image Inspect: {}", imageInspectResponse.toString()); - tmpImgs.add(imageInspectResponse.getId()); + assertThat(inspectImageResponse, not(nullValue())); + assertThat(inspectImageResponse.getId(), not(nullValue())); + LOG.info("Image Inspect: {}", inspectImageResponse.toString()); + tmpImgs.add(inspectImageResponse.getId()); - ContainerCreateResponse container = dockerClient.createContainerCmd( - imageInspectResponse.getId()).exec(); + CreateContainerResponse container = dockerClient.createContainerCmd( + inspectImageResponse.getId()).exec(); assertThat(container.getId(), not(isEmptyString())); dockerClient.startContainerCmd(container.getId()).exec(); tmpContainers.add(container.getId()); - ContainerInspectResponse containerInspectResponse = dockerClient + InspectContainerResponse inspectContainerResponse = dockerClient .inspectContainerCmd(container.getId()).exec(); - assertThat(containerInspectResponse.getId(), notNullValue()); - assertThat(containerInspectResponse.getNetworkSettings().getPorts(), + assertThat(inspectContainerResponse.getId(), notNullValue()); + assertThat(inspectContainerResponse.getNetworkSettings().getPorts(), notNullValue()); // No use as such if not running on the server -// for (Ports.Port p : containerInspectResponse.getNetworkSettings().getPorts().getAllPorts()) { +// for (Ports.Port p : inspectContainerResponse.getNetworkSettings().getPorts().getAllPorts()) { // int port = Integer.valueOf(p.getHostPort()); // LOG.info("Checking port {} is open", port); // assertThat(available(port), is(false)); @@ -225,7 +223,7 @@ public void testNetCatDockerfileBuilder() throws DockerException, dockerClient.stopContainerCmd(container.getId()).withTimeout(0).exec(); } - + @Test public void testAddAndCopySubstitution () throws DockerException, IOException { File baseDir = new File(Thread.currentThread().getContextClassLoader() @@ -233,4 +231,4 @@ public void testAddAndCopySubstitution () throws DockerException, IOException { dockerfileBuild(baseDir, "testENVSubstitution successfully completed"); } -} \ No newline at end of file +} diff --git a/src/test/java/com/github/dockerjava/client/command/CommitCmdTest.java b/src/test/java/com/github/dockerjava/client/command/CommitCmdTest.java index 2190b3b86..d4508fd31 100644 --- a/src/test/java/com/github/dockerjava/client/command/CommitCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/CommitCmdTest.java @@ -9,6 +9,8 @@ import java.lang.reflect.Method; +import com.github.dockerjava.client.model.CreateContainerResponse; +import com.github.dockerjava.client.model.InspectImageResponse; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; @@ -18,8 +20,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ContainerCreateResponse; -import com.github.dockerjava.client.model.ImageInspectResponse; public class CommitCmdTest extends AbstractDockerClientTest { @@ -27,7 +27,7 @@ public class CommitCmdTest extends AbstractDockerClientTest { public void beforeTest() throws DockerException { super.beforeTest(); } - + @AfterTest public void afterTest() { super.afterTest(); @@ -42,11 +42,11 @@ public void beforeMethod(Method method) { public void afterMethod(ITestResult result) { super.afterMethod(result); } - + @Test public void commit() throws DockerException { - ContainerCreateResponse container = dockerClient + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withCmd("touch", "/test").exec(); LOG.info("Created container: {}", container.toString()); @@ -59,18 +59,18 @@ public void commit() throws DockerException { .commitCmd(container.getId()).exec(); tmpImgs.add(imageId); - ImageInspectResponse imageInspectResponse = dockerClient + InspectImageResponse inspectImageResponse = dockerClient .inspectImageCmd(imageId).exec(); - LOG.info("Image Inspect: {}", imageInspectResponse.toString()); + LOG.info("Image Inspect: {}", inspectImageResponse.toString()); - assertThat(imageInspectResponse, + assertThat(inspectImageResponse, hasField("container", startsWith(container.getId()))); - assertThat(imageInspectResponse.getContainerConfig().getImage(), + assertThat(inspectImageResponse.getContainerConfig().getImage(), equalTo("busybox")); - ImageInspectResponse busyboxImg = dockerClient.inspectImageCmd("busybox").exec(); + InspectImageResponse busyboxImg = dockerClient.inspectImageCmd("busybox").exec(); - assertThat(imageInspectResponse.getParent(), + assertThat(inspectImageResponse.getParent(), equalTo(busyboxImg.getId())); } diff --git a/src/test/java/com/github/dockerjava/client/command/ContainerDiffCmdTest.java b/src/test/java/com/github/dockerjava/client/command/ContainerDiffCmdTest.java index 697c08c09..76b292c40 100644 --- a/src/test/java/com/github/dockerjava/client/command/ContainerDiffCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/ContainerDiffCmdTest.java @@ -10,6 +10,7 @@ import java.lang.reflect.Method; import java.util.List; +import com.github.dockerjava.client.model.CreateContainerResponse; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; @@ -20,7 +21,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; import com.github.dockerjava.client.model.ChangeLog; -import com.github.dockerjava.client.model.ContainerCreateResponse; public class ContainerDiffCmdTest extends AbstractDockerClientTest { @@ -46,7 +46,7 @@ public void afterMethod(ITestResult result) { @Test public void testDiff() throws DockerException { - ContainerCreateResponse container = dockerClient + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withCmd("touch", "/test" ).exec(); LOG.info("Created container: {}", container.toString()); assertThat(container.getId(), not(isEmptyString())); diff --git a/src/test/java/com/github/dockerjava/client/command/CreateContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/CreateContainerCmdTest.java index a0eaa48e3..45941ec57 100644 --- a/src/test/java/com/github/dockerjava/client/command/CreateContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/CreateContainerCmdTest.java @@ -7,6 +7,7 @@ import java.lang.reflect.Method; import java.util.Arrays; +import com.github.dockerjava.client.model.CreateContainerResponse; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; @@ -16,8 +17,7 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ContainerCreateResponse; -import com.github.dockerjava.client.model.ContainerInspectResponse; +import com.github.dockerjava.client.model.InspectContainerResponse; import com.github.dockerjava.client.model.Volume; public class CreateContainerCmdTest extends AbstractDockerClientTest { @@ -26,7 +26,7 @@ public class CreateContainerCmdTest extends AbstractDockerClientTest { public void beforeTest() throws DockerException { super.beforeTest(); } - + @AfterTest public void afterTest() { super.afterTest(); @@ -41,69 +41,69 @@ public void beforeMethod(Method method) { public void afterMethod(ITestResult result) { super.afterMethod(result); } - + @Test public void createContainerWithVolume() throws DockerException { - - ContainerCreateResponse container = dockerClient + + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withVolumes(new Volume("/var/log")).withCmd("true").exec(); tmpContainers.add(container.getId()); - + LOG.info("Created container {}", container.toString()); assertThat(container.getId(), not(isEmptyString())); - - ContainerInspectResponse containerInspectResponse = dockerClient.inspectContainerCmd(container.getId()).exec(); - - LOG.info("Inspect container {}", containerInspectResponse.getConfig().getVolumes()); - - assertThat(containerInspectResponse.getConfig().getVolumes().keySet(), contains("/var/log")); - - + + InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container.getId()).exec(); + + LOG.info("Inspect container {}", inspectContainerResponse.getConfig().getVolumes()); + + assertThat(inspectContainerResponse.getConfig().getVolumes().keySet(), contains("/var/log")); + + } - + @Test public void createContainerWithEnv() throws DockerException { - - ContainerCreateResponse container = dockerClient + + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withEnv("VARIABLE=success").withCmd("env").exec(); tmpContainers.add(container.getId()); - + LOG.info("Created container {}", container.toString()); assertThat(container.getId(), not(isEmptyString())); - - ContainerInspectResponse containerInspectResponse = dockerClient.inspectContainerCmd(container.getId()).exec(); - - assertThat(Arrays.asList(containerInspectResponse.getConfig().getEnv()), contains("VARIABLE=success","HOME=/","PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")); + + InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container.getId()).exec(); + + assertThat(Arrays.asList(inspectContainerResponse.getConfig().getEnv()), contains("VARIABLE=success","HOME=/","PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")); dockerClient.startContainerCmd(container.getId()).exec(); - + assertThat(logResponseStream(dockerClient.logContainerCmd(container.getId()).withStdOut().exec()), containsString("VARIABLE=success")); } - + @Test public void createContainerWithHostname() throws DockerException { - - ContainerCreateResponse container = dockerClient + + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withHostName("docker-java").withCmd("env").exec(); tmpContainers.add(container.getId()); - + LOG.info("Created container {}", container.toString()); assertThat(container.getId(), not(isEmptyString())); - - ContainerInspectResponse containerInspectResponse = dockerClient.inspectContainerCmd(container.getId()).exec(); - - assertThat(containerInspectResponse.getConfig().getHostName(), equalTo("docker-java")); + + InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container.getId()).exec(); + + assertThat(inspectContainerResponse.getConfig().getHostName(), equalTo("docker-java")); dockerClient.startContainerCmd(container.getId()).exec(); - + assertThat(logResponseStream(dockerClient.logContainerCmd(container.getId()).withStdOut().exec()), containsString("HOSTNAME=docker-java")); } - + } diff --git a/src/test/java/com/github/dockerjava/client/command/KillContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/KillContainerCmdTest.java index 35c4ded06..00fbc2444 100644 --- a/src/test/java/com/github/dockerjava/client/command/KillContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/KillContainerCmdTest.java @@ -8,6 +8,7 @@ import java.lang.reflect.Method; +import com.github.dockerjava.client.model.InspectContainerResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.ITestResult; @@ -19,8 +20,7 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ContainerCreateResponse; -import com.github.dockerjava.client.model.ContainerInspectResponse; +import com.github.dockerjava.client.model.CreateContainerResponse; public class KillContainerCmdTest extends AbstractDockerClientTest { @@ -50,7 +50,7 @@ public void afterMethod(ITestResult result) { @Test public void testKillContainer() throws DockerException { - ContainerCreateResponse container = dockerClient + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withCmd("sleep", "9999").exec(); LOG.info("Created container: {}", container.toString()); assertThat(container.getId(), not(isEmptyString())); @@ -60,13 +60,13 @@ public void testKillContainer() throws DockerException { LOG.info("Killing container: {}", container.getId()); dockerClient.killContainerCmd(container.getId()).exec(); - ContainerInspectResponse containerInspectResponse = dockerClient + InspectContainerResponse inspectContainerResponse = dockerClient .inspectContainerCmd(container.getId()).exec(); - LOG.info("Container Inspect: {}", containerInspectResponse.toString()); + LOG.info("Container Inspect: {}", inspectContainerResponse.toString()); - assertThat(containerInspectResponse.getState().isRunning(), + assertThat(inspectContainerResponse.getState().isRunning(), is(equalTo(false))); - assertThat(containerInspectResponse.getState().getExitCode(), + assertThat(inspectContainerResponse.getState().getExitCode(), not(equalTo(0))); } diff --git a/src/test/java/com/github/dockerjava/client/command/ListContainersCmdTest.java b/src/test/java/com/github/dockerjava/client/command/ListContainersCmdTest.java index df24a8116..f52f56e28 100644 --- a/src/test/java/com/github/dockerjava/client/command/ListContainersCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/ListContainersCmdTest.java @@ -14,6 +14,7 @@ import java.lang.reflect.Method; import java.util.List; +import com.github.dockerjava.client.model.InspectContainerResponse; import org.hamcrest.Matcher; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; @@ -25,8 +26,7 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; import com.github.dockerjava.client.model.Container; -import com.github.dockerjava.client.model.ContainerCreateResponse; -import com.github.dockerjava.client.model.ContainerInspectResponse; +import com.github.dockerjava.client.model.CreateContainerResponse; public class ListContainersCmdTest extends AbstractDockerClientTest { @@ -34,7 +34,7 @@ public class ListContainersCmdTest extends AbstractDockerClientTest { public void beforeTest() throws DockerException { super.beforeTest(); } - + @AfterTest public void afterTest() { super.afterTest(); @@ -49,42 +49,42 @@ public void beforeMethod(Method method) { public void afterMethod(ITestResult result) { super.afterMethod(result); } - + @Test public void testListContainers() throws DockerException { - + String testImage = "busybox"; - + // need to block until image is pulled completely logResponseStream(dockerClient.pullImageCmd(testImage).exec()); - + List containers = dockerClient.listContainersCmd().withShowAll(true).exec(); assertThat(containers, notNullValue()); LOG.info("Container List: {}", containers); int size = containers.size(); - ContainerCreateResponse container1 = dockerClient + CreateContainerResponse container1 = dockerClient .createContainerCmd(testImage).withCmd("echo").exec(); - + assertThat(container1.getId(), not(isEmptyString())); - ContainerInspectResponse containerInspectResponse = dockerClient.inspectContainerCmd(container1.getId()).exec(); - - assertThat(containerInspectResponse.getConfig().getImage(), is(equalTo(testImage))); - - + InspectContainerResponse inspectContainerResponse = dockerClient.inspectContainerCmd(container1.getId()).exec(); + + assertThat(inspectContainerResponse.getConfig().getImage(), is(equalTo(testImage))); + + dockerClient.startContainerCmd(container1.getId()).exec(); tmpContainers.add(container1.getId()); - + LOG.info("container id: " + container1.getId()); List containers2 = dockerClient.listContainersCmd().withShowAll(true).exec(); - + for(Container container: containers2) { LOG.info("listContainer: id=" + container.getId() +" image=" + container.getImage()); } - + assertThat(size + 1, is(equalTo(containers2.size()))); Matcher matcher = hasItem(hasField("id", startsWith(container1.getId()))); assertThat(containers2, matcher); @@ -96,7 +96,7 @@ public void testListContainers() throws DockerException { for(Container container: filteredContainers) { LOG.info("filteredContainer: " + container); } - + Container container2 = filteredContainers.get(0); assertThat(container2.getCommand(), not(isEmptyString())); assertThat(container2.getImage(), startsWith(testImage + ":")); diff --git a/src/test/java/com/github/dockerjava/client/command/LogContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/LogContainerCmdTest.java index 4db44621f..a0a07b25f 100644 --- a/src/test/java/com/github/dockerjava/client/command/LogContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/LogContainerCmdTest.java @@ -18,7 +18,7 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ContainerCreateResponse; +import com.github.dockerjava.client.model.CreateContainerResponse; import com.sun.jersey.api.client.ClientResponse; public class LogContainerCmdTest extends AbstractDockerClientTest { @@ -48,9 +48,9 @@ public void logContainer() throws DockerException, IOException { String snippet = "hello world"; - ContainerCreateResponse container = dockerClient + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withCmd("/bin/echo", snippet).exec(); - + LOG.info("Created container: {}", container.toString()); assertThat(container.getId(), not(isEmptyString())); diff --git a/src/test/java/com/github/dockerjava/client/command/PullImageCmdTest.java b/src/test/java/com/github/dockerjava/client/command/PullImageCmdTest.java index e4c771786..825ad19f9 100644 --- a/src/test/java/com/github/dockerjava/client/command/PullImageCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/PullImageCmdTest.java @@ -8,6 +8,7 @@ import java.io.IOException; import java.lang.reflect.Method; +import com.github.dockerjava.client.model.InspectImageResponse; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; @@ -17,7 +18,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ImageInspectResponse; import com.github.dockerjava.client.model.Info; import com.sun.jersey.api.client.ClientResponse; @@ -47,7 +47,7 @@ public void afterMethod(ITestResult result) { public void testPullImage() throws DockerException, IOException { Info info = dockerClient.infoCmd().exec(); LOG.info("Client info: {}", info.toString()); - + int imgCount = info.getImages(); LOG.info("imgCount1: {}", imgCount); @@ -63,10 +63,10 @@ public void testPullImage() throws DockerException, IOException { info = dockerClient.infoCmd().exec(); LOG.info("Client info: {}", info.toString()); - + imgCount = info.getImages(); LOG.info("imgCount2: {}", imgCount); - + LOG.info("Pulling image: {}", testImage); @@ -81,10 +81,10 @@ public void testPullImage() throws DockerException, IOException { assertThat(imgCount, lessThanOrEqualTo(info.getImages())); - ImageInspectResponse imageInspectResponse = dockerClient + InspectImageResponse inspectImageResponse = dockerClient .inspectImageCmd(testImage).exec(); - LOG.info("Image Inspect: {}", imageInspectResponse.toString()); - assertThat(imageInspectResponse, notNullValue()); + LOG.info("Image Inspect: {}", inspectImageResponse.toString()); + assertThat(inspectImageResponse, notNullValue()); } } diff --git a/src/test/java/com/github/dockerjava/client/command/PushImageCmdTest.java b/src/test/java/com/github/dockerjava/client/command/PushImageCmdTest.java index f04322ec6..dbe06729d 100644 --- a/src/test/java/com/github/dockerjava/client/command/PushImageCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/PushImageCmdTest.java @@ -20,10 +20,10 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ContainerCreateResponse; +import com.github.dockerjava.client.model.CreateContainerResponse; public class PushImageCmdTest extends AbstractDockerClientTest { - + public static final Logger LOG = LoggerFactory .getLogger(PushImageCmdTest.class); @@ -52,7 +52,7 @@ public void afterMethod(ITestResult result) { @Test public void testPushLatest() throws Exception { - ContainerCreateResponse container = dockerClient + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withCmd("true").exec(); LOG.info("Created container {}", container.toString()); @@ -60,16 +60,16 @@ public void testPushLatest() throws Exception { assertThat(container.getId(), not(isEmptyString())); tmpContainers.add(container.getId()); - + LOG.info("Commiting container: {}", container.toString()); String imageId = dockerClient.commitCmd(container.getId()).withRepository(username + "/busybox").exec(); logResponseStream(dockerClient.pushImageCmd(username + "/busybox").exec()); - + dockerClient.removeImageCmd(imageId).exec(); - + assertThat(asString(dockerClient.pullImageCmd(username + "/busybox").exec()), not(containsString("404"))); - + tmpImgs.add(username + "/busybox"); } @@ -79,6 +79,6 @@ public void testNotExistentImage() throws Exception { assertThat(logResponseStream(dockerClient.pushImageCmd(username + "/xxx").exec()), containsString("error")); } - + } diff --git a/src/test/java/com/github/dockerjava/client/command/RemoveContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/RemoveContainerCmdTest.java index 3e2bf4039..454a252a1 100644 --- a/src/test/java/com/github/dockerjava/client/command/RemoveContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/RemoveContainerCmdTest.java @@ -9,6 +9,7 @@ import java.lang.reflect.Method; import java.util.List; +import com.github.dockerjava.client.model.CreateContainerResponse; import org.hamcrest.Matcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,7 +22,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ContainerCreateResponse; public class RemoveContainerCmdTest extends AbstractDockerClientTest { @@ -50,7 +50,7 @@ public void afterMethod(ITestResult result) { @Test public void removeContainer() throws DockerException { - ContainerCreateResponse container = dockerClient + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withCmd("true").exec(); dockerClient.startContainerCmd(container.getId()).exec(); diff --git a/src/test/java/com/github/dockerjava/client/command/RemoveImageCmdTest.java b/src/test/java/com/github/dockerjava/client/command/RemoveImageCmdTest.java index 81c5dcf5b..bfee09ec0 100644 --- a/src/test/java/com/github/dockerjava/client/command/RemoveImageCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/RemoveImageCmdTest.java @@ -22,7 +22,7 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ContainerCreateResponse; +import com.github.dockerjava.client.model.CreateContainerResponse; public class RemoveImageCmdTest extends AbstractDockerClientTest { @@ -51,7 +51,7 @@ public void afterMethod(ITestResult result) { @Test public void testRemoveImage() throws DockerException, InterruptedException { - ContainerCreateResponse container = dockerClient + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withCmd("touch", "/test").exec(); LOG.info("Created container: {}", container.toString()); assertThat(container.getId(), not(isEmptyString())); diff --git a/src/test/java/com/github/dockerjava/client/command/RestartContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/RestartContainerCmdTest.java index cc65457e5..9bcd2be01 100644 --- a/src/test/java/com/github/dockerjava/client/command/RestartContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/RestartContainerCmdTest.java @@ -8,6 +8,7 @@ import java.lang.reflect.Method; +import com.github.dockerjava.client.model.InspectContainerResponse; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; @@ -17,8 +18,7 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ContainerCreateResponse; -import com.github.dockerjava.client.model.ContainerInspectResponse; +import com.github.dockerjava.client.model.CreateContainerResponse; public class RestartContainerCmdTest extends AbstractDockerClientTest { @@ -45,31 +45,31 @@ public void afterMethod(ITestResult result) { @Test public void restartContainer() throws DockerException { - ContainerCreateResponse container = dockerClient + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withCmd("sleep", "9999").exec(); LOG.info("Created container: {}", container.toString()); assertThat(container.getId(), not(isEmptyString())); dockerClient.startContainerCmd(container.getId()).exec(); tmpContainers.add(container.getId()); - ContainerInspectResponse containerInspectResponse = dockerClient + InspectContainerResponse inspectContainerResponse = dockerClient .inspectContainerCmd(container.getId()).exec(); - LOG.info("Container Inspect: {}", containerInspectResponse.toString()); + LOG.info("Container Inspect: {}", inspectContainerResponse.toString()); - String startTime = containerInspectResponse.getState().getStartedAt(); + String startTime = inspectContainerResponse.getState().getStartedAt(); dockerClient.restartContainerCmd(container.getId()).withtTimeout(2).exec(); - ContainerInspectResponse containerInspectResponse2 = dockerClient + InspectContainerResponse inspectContainerResponse2 = dockerClient .inspectContainerCmd(container.getId()).exec(); LOG.info("Container Inspect After Restart: {}", - containerInspectResponse2.toString()); + inspectContainerResponse2.toString()); - String startTime2 = containerInspectResponse2.getState().getStartedAt(); + String startTime2 = inspectContainerResponse2.getState().getStartedAt(); assertThat(startTime, not(equalTo(startTime2))); - assertThat(containerInspectResponse.getState().isRunning(), + assertThat(inspectContainerResponse.getState().isRunning(), is(equalTo(true))); dockerClient.killContainerCmd(container.getId()).exec(); 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 996d93fa2..7b1097818 100644 --- a/src/test/java/com/github/dockerjava/client/command/StartContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/StartContainerCmdTest.java @@ -12,6 +12,7 @@ import java.lang.reflect.Method; import java.util.Arrays; +import com.github.dockerjava.client.model.*; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; @@ -21,14 +22,7 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.Bind; -import com.github.dockerjava.client.model.ContainerCreateResponse; -import com.github.dockerjava.client.model.ContainerInspectResponse; -import com.github.dockerjava.client.model.ExposedPort; -import com.github.dockerjava.client.model.Link; -import com.github.dockerjava.client.model.Ports; -import com.github.dockerjava.client.model.Volume; - +import com.github.dockerjava.client.model.CreateContainerResponse; public class StartContainerCmdTest extends AbstractDockerClientTest { @@ -58,10 +52,10 @@ public void startContainerWithVolumes() throws DockerException { // see http://docs.docker.io/use/working_with_volumes/ Volume volume1 = new Volume("/opt/webapp1"); - + Volume volume2 = new Volume("/opt/webapp2"); - - ContainerCreateResponse container = dockerClient + + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withVolumes(volume1, volume2) .withCmd("true").exec(); @@ -69,37 +63,37 @@ public void startContainerWithVolumes() throws DockerException { assertThat(container.getId(), not(isEmptyString())); - ContainerInspectResponse containerInspectResponse = dockerClient + InspectContainerResponse inspectContainerResponse = dockerClient .inspectContainerCmd(container.getId()).exec(); - assertThat(containerInspectResponse.getConfig().getVolumes().keySet(), + assertThat(inspectContainerResponse.getConfig().getVolumes().keySet(), contains("/opt/webapp1", "/opt/webapp2")); - + dockerClient.startContainerCmd(container.getId()).withBinds(new Bind("/src/webapp1", volume1, true), new Bind("/src/webapp2", volume2)).exec(); dockerClient.waitContainerCmd(container.getId()).exec(); - containerInspectResponse = dockerClient.inspectContainerCmd(container + inspectContainerResponse = dockerClient.inspectContainerCmd(container .getId()).exec(); - - assertThat(Arrays.asList(containerInspectResponse.getVolumes()), + + assertThat(Arrays.asList(inspectContainerResponse.getVolumes()), contains(volume1, volume2)); - assertThat(Arrays.asList(containerInspectResponse.getVolumesRW()), + assertThat(Arrays.asList(inspectContainerResponse.getVolumesRW()), contains(volume1, volume2)); - + tmpContainers.add(container.getId()); } - + @Test public void startContainerWithPortBindings() throws DockerException { - + ExposedPort tcp22 = ExposedPort.tcp(22); ExposedPort tcp23 = ExposedPort.tcp(23); - - ContainerCreateResponse container = dockerClient + + CreateContainerResponse container = dockerClient .createContainerCmd("busybox") .withCmd("true").withExposedPorts(tcp22, tcp23).exec(); @@ -107,7 +101,7 @@ public void startContainerWithPortBindings() throws DockerException { assertThat(container.getId(), not(isEmptyString())); - ContainerInspectResponse containerInspectResponse = dockerClient + InspectContainerResponse inspectContainerResponse = dockerClient .inspectContainerCmd(container.getId()).exec(); Ports portBindings = new Ports(); @@ -116,106 +110,106 @@ public void startContainerWithPortBindings() throws DockerException { dockerClient.startContainerCmd(container.getId()).withPortBindings(portBindings).exec(); - containerInspectResponse = dockerClient.inspectContainerCmd(container + inspectContainerResponse = dockerClient.inspectContainerCmd(container .getId()).exec(); - assertThat(Arrays.asList(containerInspectResponse.getConfig().getExposedPorts()), + assertThat(Arrays.asList(inspectContainerResponse.getConfig().getExposedPorts()), contains(tcp22, tcp23)); - assertThat(containerInspectResponse.getHostConfig().getPortBindings().getBindings().get(tcp22), + assertThat(inspectContainerResponse.getHostConfig().getPortBindings().getBindings().get(tcp22), is(equalTo(Ports.Binding("0.0.0.0", 11022)))); - - assertThat(containerInspectResponse.getHostConfig().getPortBindings().getBindings().get(tcp23), + + assertThat(inspectContainerResponse.getHostConfig().getPortBindings().getBindings().get(tcp23), is(equalTo(Ports.Binding("0.0.0.0", 11023)))); - + tmpContainers.add(container.getId()); } - + @Test public void startContainerWithLinking() throws DockerException { - ContainerCreateResponse container1 = dockerClient + CreateContainerResponse container1 = dockerClient .createContainerCmd("busybox").withCmd("sleep", "9999").withName("container1").exec(); - + LOG.info("Created container1 {}", container1.toString()); assertThat(container1.getId(), not(isEmptyString())); tmpContainers.add(container1.getId()); dockerClient.startContainerCmd(container1.getId()).exec(); - ContainerInspectResponse containerInspectResponse1 = dockerClient + InspectContainerResponse inspectContainerResponse1 = dockerClient .inspectContainerCmd(container1.getId()).exec(); - LOG.info("Container1 Inspect: {}", containerInspectResponse1.toString()); - - assertThat(containerInspectResponse1.getConfig(), is(notNullValue())); - assertThat(containerInspectResponse1.getId(), not(isEmptyString())); - assertThat(containerInspectResponse1.getId(), startsWith(container1.getId())); - assertThat(containerInspectResponse1.getName(), equalTo("/container1")); - assertThat(containerInspectResponse1.getImageId(), not(isEmptyString())); - assertThat(containerInspectResponse1.getState(), is(notNullValue())); - assertThat(containerInspectResponse1.getState().isRunning(), is(true)); - - if (!containerInspectResponse1.getState().isRunning()) { - assertThat(containerInspectResponse1.getState().getExitCode(), + LOG.info("Container1 Inspect: {}", inspectContainerResponse1.toString()); + + assertThat(inspectContainerResponse1.getConfig(), is(notNullValue())); + assertThat(inspectContainerResponse1.getId(), not(isEmptyString())); + assertThat(inspectContainerResponse1.getId(), startsWith(container1.getId())); + assertThat(inspectContainerResponse1.getName(), equalTo("/container1")); + assertThat(inspectContainerResponse1.getImageId(), not(isEmptyString())); + assertThat(inspectContainerResponse1.getState(), is(notNullValue())); + assertThat(inspectContainerResponse1.getState().isRunning(), is(true)); + + if (!inspectContainerResponse1.getState().isRunning()) { + assertThat(inspectContainerResponse1.getState().getExitCode(), is(equalTo(0))); } - - ContainerCreateResponse container2 = dockerClient + + CreateContainerResponse container2 = dockerClient .createContainerCmd("busybox").withCmd("true").withName("container2").exec(); - + LOG.info("Created container2 {}", container2.toString()); assertThat(container2.getId(), not(isEmptyString())); tmpContainers.add(container2.getId()); dockerClient.startContainerCmd(container2.getId()).withLinks(new Link("container1", "container1Link")).exec(); - ContainerInspectResponse containerInspectResponse2 = dockerClient + InspectContainerResponse inspectContainerResponse2 = dockerClient .inspectContainerCmd(container2.getId()).exec(); - LOG.info("Container2 Inspect: {}", containerInspectResponse2.toString()); - - assertThat(containerInspectResponse2.getConfig(), is(notNullValue())); - assertThat(containerInspectResponse2.getId(), not(isEmptyString())); - assertThat(containerInspectResponse2.getHostConfig(), is(notNullValue())); - assertThat(containerInspectResponse2.getHostConfig().getLinks(), is(notNullValue())); - assertThat(containerInspectResponse2.getHostConfig().getLinks(), equalTo(new String[] {"/container1:/container2/container1Link"})); - assertThat(containerInspectResponse2.getId(), startsWith(container2.getId())); - assertThat(containerInspectResponse2.getName(), equalTo("/container2")); - assertThat(containerInspectResponse2.getImageId(), not(isEmptyString())); - assertThat(containerInspectResponse2.getState(), is(notNullValue())); - assertThat(containerInspectResponse2.getState().isRunning(), is(true)); + LOG.info("Container2 Inspect: {}", inspectContainerResponse2.toString()); + + assertThat(inspectContainerResponse2.getConfig(), is(notNullValue())); + assertThat(inspectContainerResponse2.getId(), not(isEmptyString())); + assertThat(inspectContainerResponse2.getHostConfig(), is(notNullValue())); + assertThat(inspectContainerResponse2.getHostConfig().getLinks(), is(notNullValue())); + assertThat(inspectContainerResponse2.getHostConfig().getLinks(), equalTo(new String[] {"/container1:/container2/container1Link"})); + assertThat(inspectContainerResponse2.getId(), startsWith(container2.getId())); + assertThat(inspectContainerResponse2.getName(), equalTo("/container2")); + assertThat(inspectContainerResponse2.getImageId(), not(isEmptyString())); + assertThat(inspectContainerResponse2.getState(), is(notNullValue())); + assertThat(inspectContainerResponse2.getState().isRunning(), is(true)); } - + @Test public void startContainer() throws DockerException { - ContainerCreateResponse container = dockerClient + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withCmd(new String[] { "top" }).exec(); - + LOG.info("Created container {}", container.toString()); assertThat(container.getId(), not(isEmptyString())); tmpContainers.add(container.getId()); dockerClient.startContainerCmd(container.getId()).exec(); - ContainerInspectResponse containerInspectResponse = dockerClient + InspectContainerResponse inspectContainerResponse = dockerClient .inspectContainerCmd(container.getId()).exec(); - LOG.info("Container Inspect: {}", containerInspectResponse.toString()); + LOG.info("Container Inspect: {}", inspectContainerResponse.toString()); - assertThat(containerInspectResponse.getConfig(), is(notNullValue())); - assertThat(containerInspectResponse.getId(), not(isEmptyString())); + assertThat(inspectContainerResponse.getConfig(), is(notNullValue())); + assertThat(inspectContainerResponse.getId(), not(isEmptyString())); - assertThat(containerInspectResponse.getId(), + assertThat(inspectContainerResponse.getId(), startsWith(container.getId())); - assertThat(containerInspectResponse.getImageId(), not(isEmptyString())); - assertThat(containerInspectResponse.getState(), is(notNullValue())); + assertThat(inspectContainerResponse.getImageId(), not(isEmptyString())); + assertThat(inspectContainerResponse.getState(), is(notNullValue())); - assertThat(containerInspectResponse.getState().isRunning(), is(true)); + assertThat(inspectContainerResponse.getState().isRunning(), is(true)); - if (!containerInspectResponse.getState().isRunning()) { - assertThat(containerInspectResponse.getState().getExitCode(), + if (!inspectContainerResponse.getState().isRunning()) { + assertThat(inspectContainerResponse.getState().getExitCode(), is(equalTo(0))); } diff --git a/src/test/java/com/github/dockerjava/client/command/StopContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/StopContainerCmdTest.java index d9151088d..719afe0d1 100644 --- a/src/test/java/com/github/dockerjava/client/command/StopContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/StopContainerCmdTest.java @@ -8,6 +8,7 @@ import java.lang.reflect.Method; +import com.github.dockerjava.client.model.InspectContainerResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.ITestResult; @@ -19,8 +20,7 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ContainerCreateResponse; -import com.github.dockerjava.client.model.ContainerInspectResponse; +import com.github.dockerjava.client.model.CreateContainerResponse; public class StopContainerCmdTest extends AbstractDockerClientTest { @@ -50,7 +50,7 @@ public void afterMethod(ITestResult result) { @Test public void testStopContainer() throws DockerException { - ContainerCreateResponse container = dockerClient + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withCmd("sleep", "9999").exec(); LOG.info("Created container: {}", container.toString()); assertThat(container.getId(), not(isEmptyString())); @@ -60,12 +60,12 @@ public void testStopContainer() throws DockerException { LOG.info("Stopping container: {}", container.getId()); dockerClient.stopContainerCmd(container.getId()).withTimeout(2).exec(); - ContainerInspectResponse containerInspectResponse = dockerClient + InspectContainerResponse inspectContainerResponse = dockerClient .inspectContainerCmd(container.getId()).exec(); - LOG.info("Container Inspect: {}", containerInspectResponse.toString()); + LOG.info("Container Inspect: {}", inspectContainerResponse.toString()); - assertThat(containerInspectResponse.getState().isRunning(), is(equalTo(false))); - assertThat(containerInspectResponse.getState().getExitCode(), not(equalTo(0))); + assertThat(inspectContainerResponse.getState().isRunning(), is(equalTo(false))); + assertThat(inspectContainerResponse.getState().getExitCode(), not(equalTo(0))); } } diff --git a/src/test/java/com/github/dockerjava/client/command/WaitContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/WaitContainerCmdTest.java index 0fd5a3287..40483648c 100644 --- a/src/test/java/com/github/dockerjava/client/command/WaitContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/WaitContainerCmdTest.java @@ -8,6 +8,7 @@ import java.lang.reflect.Method; +import com.github.dockerjava.client.model.InspectContainerResponse; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; @@ -17,8 +18,7 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ContainerCreateResponse; -import com.github.dockerjava.client.model.ContainerInspectResponse; +import com.github.dockerjava.client.model.CreateContainerResponse; public class WaitContainerCmdTest extends AbstractDockerClientTest { @@ -45,9 +45,9 @@ public void afterMethod(ITestResult result) { @Test public void testWaitContainer() throws DockerException { - ContainerCreateResponse container = dockerClient + CreateContainerResponse container = dockerClient .createContainerCmd("busybox").withCmd("true").exec(); - + LOG.info("Created container: {}", container.toString()); assertThat(container.getId(), not(isEmptyString())); tmpContainers.add(container.getId()); @@ -59,12 +59,12 @@ public void testWaitContainer() throws DockerException { assertThat(exitCode, equalTo(0)); - ContainerInspectResponse containerInspectResponse = dockerClient + InspectContainerResponse inspectContainerResponse = dockerClient .inspectContainerCmd(container.getId()).exec(); - LOG.info("Container Inspect: {}", containerInspectResponse.toString()); + LOG.info("Container Inspect: {}", inspectContainerResponse.toString()); - assertThat(containerInspectResponse.getState().isRunning(), is(equalTo(false))); - assertThat(containerInspectResponse.getState().getExitCode(), is(equalTo(exitCode))); + assertThat(inspectContainerResponse.getState().isRunning(), is(equalTo(false))); + assertThat(inspectContainerResponse.getState().getExitCode(), is(equalTo(exitCode))); } From dc0e625d5c6f7c74fc1f1e76f3f3bc37341d95ba Mon Sep 17 00:00:00 2001 From: Matt Fulgo Date: Thu, 31 Jul 2014 11:36:15 -0400 Subject: [PATCH 02/13] Moves response objects to the commands package This moves the Response objects into the same package as their associated commands, since they're so tightly coupled. --- .../github/dockerjava/client/command/CreateContainerCmd.java | 1 - .../client/{model => command}/CreateContainerResponse.java | 2 +- .../client/{model => command}/CreateImageResponse.java | 2 +- .../com/github/dockerjava/client/command/ImportImageCmd.java | 1 - .../github/dockerjava/client/command/InspectContainerCmd.java | 1 - .../client/{model => command}/InspectContainerResponse.java | 3 ++- .../com/github/dockerjava/client/command/InspectImageCmd.java | 1 - .../client/{model => command}/InspectImageResponse.java | 3 ++- .../com/github/dockerjava/client/command/TopContainerCmd.java | 1 - .../client/{model => command}/TopContainerResponse.java | 2 +- .../java/com/github/dockerjava/client/DockerClientTest.java | 2 +- .../github/dockerjava/client/command/BuildImageCmdTest.java | 3 --- .../com/github/dockerjava/client/command/CommitCmdTest.java | 2 -- .../github/dockerjava/client/command/ContainerDiffCmdTest.java | 1 - .../dockerjava/client/command/CreateContainerCmdTest.java | 2 -- .../github/dockerjava/client/command/KillContainerCmdTest.java | 2 -- .../dockerjava/client/command/ListContainersCmdTest.java | 2 -- .../github/dockerjava/client/command/LogContainerCmdTest.java | 1 - .../com/github/dockerjava/client/command/PullImageCmdTest.java | 1 - .../com/github/dockerjava/client/command/PushImageCmdTest.java | 1 - .../dockerjava/client/command/RemoveContainerCmdTest.java | 1 - .../github/dockerjava/client/command/RemoveImageCmdTest.java | 1 - .../dockerjava/client/command/RestartContainerCmdTest.java | 2 -- .../dockerjava/client/command/StartContainerCmdTest.java | 1 - .../github/dockerjava/client/command/StopContainerCmdTest.java | 2 -- .../github/dockerjava/client/command/WaitContainerCmdTest.java | 2 -- 26 files changed, 8 insertions(+), 35 deletions(-) rename src/main/java/com/github/dockerjava/client/{model => command}/CreateContainerResponse.java (95%) rename src/main/java/com/github/dockerjava/client/{model => command}/CreateImageResponse.java (92%) rename src/main/java/com/github/dockerjava/client/{model => command}/InspectContainerResponse.java (98%) rename src/main/java/com/github/dockerjava/client/{model => command}/InspectImageResponse.java (95%) rename src/main/java/com/github/dockerjava/client/{model => command}/TopContainerResponse.java (95%) diff --git a/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java index 0d4c6b2aa..a8456e3b1 100644 --- a/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java @@ -3,7 +3,6 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; -import com.github.dockerjava.client.model.CreateContainerResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/com/github/dockerjava/client/model/CreateContainerResponse.java b/src/main/java/com/github/dockerjava/client/command/CreateContainerResponse.java similarity index 95% rename from src/main/java/com/github/dockerjava/client/model/CreateContainerResponse.java rename to src/main/java/com/github/dockerjava/client/command/CreateContainerResponse.java index ab1e0a58f..c8a5870e6 100644 --- a/src/main/java/com/github/dockerjava/client/model/CreateContainerResponse.java +++ b/src/main/java/com/github/dockerjava/client/command/CreateContainerResponse.java @@ -1,4 +1,4 @@ -package com.github.dockerjava.client.model; +package com.github.dockerjava.client.command; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/com/github/dockerjava/client/model/CreateImageResponse.java b/src/main/java/com/github/dockerjava/client/command/CreateImageResponse.java similarity index 92% rename from src/main/java/com/github/dockerjava/client/model/CreateImageResponse.java rename to src/main/java/com/github/dockerjava/client/command/CreateImageResponse.java index 30aa5fc08..3c657b9a3 100644 --- a/src/main/java/com/github/dockerjava/client/model/CreateImageResponse.java +++ b/src/main/java/com/github/dockerjava/client/command/CreateImageResponse.java @@ -1,4 +1,4 @@ -package com.github.dockerjava.client.model; +package com.github.dockerjava.client.command; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/com/github/dockerjava/client/command/ImportImageCmd.java b/src/main/java/com/github/dockerjava/client/command/ImportImageCmd.java index cefaa347d..3744eeb81 100644 --- a/src/main/java/com/github/dockerjava/client/command/ImportImageCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/ImportImageCmd.java @@ -5,7 +5,6 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; -import com.github.dockerjava.client.model.CreateImageResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/com/github/dockerjava/client/command/InspectContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/InspectContainerCmd.java index e82847933..78967e2d3 100644 --- a/src/main/java/com/github/dockerjava/client/command/InspectContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/InspectContainerCmd.java @@ -2,7 +2,6 @@ import javax.ws.rs.core.MediaType; -import com.github.dockerjava.client.model.InspectContainerResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/com/github/dockerjava/client/model/InspectContainerResponse.java b/src/main/java/com/github/dockerjava/client/command/InspectContainerResponse.java similarity index 98% rename from src/main/java/com/github/dockerjava/client/model/InspectContainerResponse.java rename to src/main/java/com/github/dockerjava/client/command/InspectContainerResponse.java index 53824430b..bdfb5ce59 100644 --- a/src/main/java/com/github/dockerjava/client/model/InspectContainerResponse.java +++ b/src/main/java/com/github/dockerjava/client/command/InspectContainerResponse.java @@ -1,4 +1,4 @@ -package com.github.dockerjava.client.model; +package com.github.dockerjava.client.command; import java.util.Arrays; @@ -7,6 +7,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import com.github.dockerjava.client.model.*; /** * diff --git a/src/main/java/com/github/dockerjava/client/command/InspectImageCmd.java b/src/main/java/com/github/dockerjava/client/command/InspectImageCmd.java index f414e1451..0343dc82e 100644 --- a/src/main/java/com/github/dockerjava/client/command/InspectImageCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/InspectImageCmd.java @@ -7,7 +7,6 @@ import com.github.dockerjava.client.DockerException; import com.github.dockerjava.client.NotFoundException; -import com.github.dockerjava.client.model.InspectImageResponse; import com.google.common.base.Preconditions; import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.api.client.WebResource; diff --git a/src/main/java/com/github/dockerjava/client/model/InspectImageResponse.java b/src/main/java/com/github/dockerjava/client/command/InspectImageResponse.java similarity index 95% rename from src/main/java/com/github/dockerjava/client/model/InspectImageResponse.java rename to src/main/java/com/github/dockerjava/client/command/InspectImageResponse.java index b2c427116..82b634e47 100644 --- a/src/main/java/com/github/dockerjava/client/model/InspectImageResponse.java +++ b/src/main/java/com/github/dockerjava/client/command/InspectImageResponse.java @@ -1,7 +1,8 @@ -package com.github.dockerjava.client.model; +package com.github.dockerjava.client.command; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import com.github.dockerjava.client.model.ContainerConfig; /** * diff --git a/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java index d863dd563..fde5f54eb 100644 --- a/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java @@ -2,7 +2,6 @@ import javax.ws.rs.core.MediaType; -import com.github.dockerjava.client.model.TopContainerResponse; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/com/github/dockerjava/client/model/TopContainerResponse.java b/src/main/java/com/github/dockerjava/client/command/TopContainerResponse.java similarity index 95% rename from src/main/java/com/github/dockerjava/client/model/TopContainerResponse.java rename to src/main/java/com/github/dockerjava/client/command/TopContainerResponse.java index a258d6020..70701ff1f 100644 --- a/src/main/java/com/github/dockerjava/client/model/TopContainerResponse.java +++ b/src/main/java/com/github/dockerjava/client/command/TopContainerResponse.java @@ -1,4 +1,4 @@ -package com.github.dockerjava.client.model; +package com.github.dockerjava.client.command; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/test/java/com/github/dockerjava/client/DockerClientTest.java b/src/test/java/com/github/dockerjava/client/DockerClientTest.java index 22843ac48..9abac0b47 100644 --- a/src/test/java/com/github/dockerjava/client/DockerClientTest.java +++ b/src/test/java/com/github/dockerjava/client/DockerClientTest.java @@ -5,7 +5,7 @@ import java.lang.reflect.Method; -import com.github.dockerjava.client.model.CreateContainerResponse; +import com.github.dockerjava.client.command.CreateContainerResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.ITestResult; diff --git a/src/test/java/com/github/dockerjava/client/command/BuildImageCmdTest.java b/src/test/java/com/github/dockerjava/client/command/BuildImageCmdTest.java index 74a7423ca..17934c062 100644 --- a/src/test/java/com/github/dockerjava/client/command/BuildImageCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/BuildImageCmdTest.java @@ -13,8 +13,6 @@ import java.io.StringWriter; import java.lang.reflect.Method; -import com.github.dockerjava.client.model.CreateContainerResponse; -import com.github.dockerjava.client.model.InspectImageResponse; import org.apache.commons.io.IOUtils; import org.apache.commons.io.LineIterator; import org.apache.commons.lang.StringUtils; @@ -27,7 +25,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.InspectContainerResponse; import com.sun.jersey.api.client.ClientResponse; public class BuildImageCmdTest extends AbstractDockerClientTest { diff --git a/src/test/java/com/github/dockerjava/client/command/CommitCmdTest.java b/src/test/java/com/github/dockerjava/client/command/CommitCmdTest.java index d4508fd31..85bc6227f 100644 --- a/src/test/java/com/github/dockerjava/client/command/CommitCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/CommitCmdTest.java @@ -9,8 +9,6 @@ import java.lang.reflect.Method; -import com.github.dockerjava.client.model.CreateContainerResponse; -import com.github.dockerjava.client.model.InspectImageResponse; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; diff --git a/src/test/java/com/github/dockerjava/client/command/ContainerDiffCmdTest.java b/src/test/java/com/github/dockerjava/client/command/ContainerDiffCmdTest.java index 76b292c40..078d63823 100644 --- a/src/test/java/com/github/dockerjava/client/command/ContainerDiffCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/ContainerDiffCmdTest.java @@ -10,7 +10,6 @@ import java.lang.reflect.Method; import java.util.List; -import com.github.dockerjava.client.model.CreateContainerResponse; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; diff --git a/src/test/java/com/github/dockerjava/client/command/CreateContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/CreateContainerCmdTest.java index 45941ec57..56fc5ca91 100644 --- a/src/test/java/com/github/dockerjava/client/command/CreateContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/CreateContainerCmdTest.java @@ -7,7 +7,6 @@ import java.lang.reflect.Method; import java.util.Arrays; -import com.github.dockerjava.client.model.CreateContainerResponse; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; @@ -17,7 +16,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.InspectContainerResponse; import com.github.dockerjava.client.model.Volume; public class CreateContainerCmdTest extends AbstractDockerClientTest { diff --git a/src/test/java/com/github/dockerjava/client/command/KillContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/KillContainerCmdTest.java index 00fbc2444..b1ff30276 100644 --- a/src/test/java/com/github/dockerjava/client/command/KillContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/KillContainerCmdTest.java @@ -8,7 +8,6 @@ import java.lang.reflect.Method; -import com.github.dockerjava.client.model.InspectContainerResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.ITestResult; @@ -20,7 +19,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.CreateContainerResponse; public class KillContainerCmdTest extends AbstractDockerClientTest { diff --git a/src/test/java/com/github/dockerjava/client/command/ListContainersCmdTest.java b/src/test/java/com/github/dockerjava/client/command/ListContainersCmdTest.java index f52f56e28..7c4332fcd 100644 --- a/src/test/java/com/github/dockerjava/client/command/ListContainersCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/ListContainersCmdTest.java @@ -14,7 +14,6 @@ import java.lang.reflect.Method; import java.util.List; -import com.github.dockerjava.client.model.InspectContainerResponse; import org.hamcrest.Matcher; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; @@ -26,7 +25,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; import com.github.dockerjava.client.model.Container; -import com.github.dockerjava.client.model.CreateContainerResponse; public class ListContainersCmdTest extends AbstractDockerClientTest { diff --git a/src/test/java/com/github/dockerjava/client/command/LogContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/LogContainerCmdTest.java index a0a07b25f..43c54d22e 100644 --- a/src/test/java/com/github/dockerjava/client/command/LogContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/LogContainerCmdTest.java @@ -18,7 +18,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.CreateContainerResponse; import com.sun.jersey.api.client.ClientResponse; public class LogContainerCmdTest extends AbstractDockerClientTest { diff --git a/src/test/java/com/github/dockerjava/client/command/PullImageCmdTest.java b/src/test/java/com/github/dockerjava/client/command/PullImageCmdTest.java index 825ad19f9..0472720d9 100644 --- a/src/test/java/com/github/dockerjava/client/command/PullImageCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/PullImageCmdTest.java @@ -8,7 +8,6 @@ import java.io.IOException; import java.lang.reflect.Method; -import com.github.dockerjava.client.model.InspectImageResponse; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; diff --git a/src/test/java/com/github/dockerjava/client/command/PushImageCmdTest.java b/src/test/java/com/github/dockerjava/client/command/PushImageCmdTest.java index dbe06729d..0e1dcf1ba 100644 --- a/src/test/java/com/github/dockerjava/client/command/PushImageCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/PushImageCmdTest.java @@ -20,7 +20,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.CreateContainerResponse; public class PushImageCmdTest extends AbstractDockerClientTest { diff --git a/src/test/java/com/github/dockerjava/client/command/RemoveContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/RemoveContainerCmdTest.java index 454a252a1..4b614a489 100644 --- a/src/test/java/com/github/dockerjava/client/command/RemoveContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/RemoveContainerCmdTest.java @@ -9,7 +9,6 @@ import java.lang.reflect.Method; import java.util.List; -import com.github.dockerjava.client.model.CreateContainerResponse; import org.hamcrest.Matcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/test/java/com/github/dockerjava/client/command/RemoveImageCmdTest.java b/src/test/java/com/github/dockerjava/client/command/RemoveImageCmdTest.java index bfee09ec0..5944d8f65 100644 --- a/src/test/java/com/github/dockerjava/client/command/RemoveImageCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/RemoveImageCmdTest.java @@ -22,7 +22,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.CreateContainerResponse; public class RemoveImageCmdTest extends AbstractDockerClientTest { diff --git a/src/test/java/com/github/dockerjava/client/command/RestartContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/RestartContainerCmdTest.java index 9bcd2be01..c25784b90 100644 --- a/src/test/java/com/github/dockerjava/client/command/RestartContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/RestartContainerCmdTest.java @@ -8,7 +8,6 @@ import java.lang.reflect.Method; -import com.github.dockerjava.client.model.InspectContainerResponse; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; @@ -18,7 +17,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.CreateContainerResponse; public class RestartContainerCmdTest extends AbstractDockerClientTest { 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 7b1097818..4ea95fec5 100644 --- a/src/test/java/com/github/dockerjava/client/command/StartContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/StartContainerCmdTest.java @@ -22,7 +22,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.CreateContainerResponse; public class StartContainerCmdTest extends AbstractDockerClientTest { diff --git a/src/test/java/com/github/dockerjava/client/command/StopContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/StopContainerCmdTest.java index 719afe0d1..aeb8ed0d0 100644 --- a/src/test/java/com/github/dockerjava/client/command/StopContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/StopContainerCmdTest.java @@ -8,7 +8,6 @@ import java.lang.reflect.Method; -import com.github.dockerjava.client.model.InspectContainerResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.ITestResult; @@ -20,7 +19,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.CreateContainerResponse; public class StopContainerCmdTest extends AbstractDockerClientTest { diff --git a/src/test/java/com/github/dockerjava/client/command/WaitContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/WaitContainerCmdTest.java index 40483648c..fff083213 100644 --- a/src/test/java/com/github/dockerjava/client/command/WaitContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/WaitContainerCmdTest.java @@ -8,7 +8,6 @@ import java.lang.reflect.Method; -import com.github.dockerjava.client.model.InspectContainerResponse; import org.testng.ITestResult; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterTest; @@ -18,7 +17,6 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.CreateContainerResponse; public class WaitContainerCmdTest extends AbstractDockerClientTest { From e904a40f2a486a92a0418b2e41dde3ecc0e8a39d Mon Sep 17 00:00:00 2001 From: Matt Fulgo Date: Thu, 31 Jul 2014 11:45:20 -0400 Subject: [PATCH 03/13] Renames ImportImageCmd to CreateImageCmd This renames the command class and related methods to match the method name in the Docker Remote API. https://docs.docker.com/reference/api/docker_remote_api_v1.13/#22-images --- .../com/github/dockerjava/client/DockerClient.java | 13 ++++++------- .../dockerjava/client/command/CommandFactory.java | 2 +- .../{ImportImageCmd.java => CreateImageCmd.java} | 12 ++++++------ .../client/command/DefaultCommandFactory.java | 6 +++--- 4 files changed, 16 insertions(+), 17 deletions(-) rename src/main/java/com/github/dockerjava/client/command/{ImportImageCmd.java => CreateImageCmd.java} (86%) diff --git a/src/main/java/com/github/dockerjava/client/DockerClient.java b/src/main/java/com/github/dockerjava/client/DockerClient.java index 2aba605a5..09bd70176 100644 --- a/src/main/java/com/github/dockerjava/client/DockerClient.java +++ b/src/main/java/com/github/dockerjava/client/DockerClient.java @@ -24,7 +24,7 @@ import com.github.dockerjava.client.command.ContainerDiffCmd; import com.github.dockerjava.client.command.CopyFileFromContainerCmd; import com.github.dockerjava.client.command.CreateContainerCmd; -import com.github.dockerjava.client.command.ImportImageCmd; +import com.github.dockerjava.client.command.CreateImageCmd; import com.github.dockerjava.client.command.InfoCmd; import com.github.dockerjava.client.command.InspectContainerCmd; import com.github.dockerjava.client.command.InspectImageCmd; @@ -63,7 +63,7 @@ public class DockerClient implements Closeable { private Client client; - + private final CommandFactory cmdFactory; private final WebResource baseResource; private AuthConfig authConfig; @@ -96,7 +96,7 @@ public DockerClient(Config config, CommandFactory cmdFactory) { ClientConfig clientConfig = new DefaultClientConfig(); client = new ApacheHttpClient4(new ApacheHttpClient4Handler(httpClient, null, false), clientConfig); - + if(config.getReadTimeout() != null) { client.setReadTimeout(config.getReadTimeout()); } @@ -195,7 +195,7 @@ public AuthCmd authCmd() { public InfoCmd infoCmd() throws DockerException { return cmdFactory.infoCmd().withBaseResource(baseResource); } - + public PingCmd pingCmd() { return cmdFactory.pingCmd().withBaseResource(baseResource); } @@ -221,9 +221,8 @@ public PushImageCmd pushImageCmd(String name) { // return execute(pushImageCmd(name)); // } - public ImportImageCmd importImageCmd(String repository, - InputStream imageStream) { - return cmdFactory.importImageCmd(repository, imageStream) + public CreateImageCmd createImageCmd(String repository, InputStream imageStream) { + return cmdFactory.createImageCmd(repository, imageStream) .withBaseResource(baseResource); } diff --git a/src/main/java/com/github/dockerjava/client/command/CommandFactory.java b/src/main/java/com/github/dockerjava/client/command/CommandFactory.java index 06f8fe78d..ad970a4b1 100644 --- a/src/main/java/com/github/dockerjava/client/command/CommandFactory.java +++ b/src/main/java/com/github/dockerjava/client/command/CommandFactory.java @@ -14,7 +14,7 @@ public interface CommandFactory { public ContainerDiffCmd containerDiffCmd(String containerId); public CopyFileFromContainerCmd copyFileFromContainerCmd(String containerId, String resource); public CreateContainerCmd createContainerCmd(String image); - public ImportImageCmd importImageCmd(String repository, InputStream imageStream); + public CreateImageCmd createImageCmd(String repository, InputStream imageStream); public InfoCmd infoCmd(); public InspectContainerCmd inspectContainerCmd(String containerId); public InspectImageCmd inspectImageCmd(String imageId); diff --git a/src/main/java/com/github/dockerjava/client/command/ImportImageCmd.java b/src/main/java/com/github/dockerjava/client/command/CreateImageCmd.java similarity index 86% rename from src/main/java/com/github/dockerjava/client/command/ImportImageCmd.java rename to src/main/java/com/github/dockerjava/client/command/CreateImageCmd.java index 3744eeb81..1254f63e8 100644 --- a/src/main/java/com/github/dockerjava/client/command/ImportImageCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/CreateImageCmd.java @@ -17,9 +17,9 @@ /** * Create an image by importing the given stream of a tar file. */ -public class ImportImageCmd extends AbstrDockerCmd { +public class CreateImageCmd extends AbstrDockerCmd { - private static final Logger LOGGER = LoggerFactory.getLogger(ImportImageCmd.class); + private static final Logger LOGGER = LoggerFactory.getLogger(CreateImageCmd.class); private String repository, tag; private InputStream imageStream; @@ -28,7 +28,7 @@ public class ImportImageCmd extends AbstrDockerCmd Date: Fri, 1 Aug 2014 16:48:41 -0400 Subject: [PATCH 04/13] Adds test for CopyFileFromContainer This changes the CopyFileFromContainer's impl method to not call toString on the copyConfig that it uses in the POST body, instead relying on the default JSON serializer and marked fields. This will allow us to use a reflection-based toString. This commit also creates a test around the use of the CopyFileFromContainer command. --- .../command/CopyFileFromContainerCmd.java | 2 +- .../command/CopyFileFromContainerCmdTest.java | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/github/dockerjava/client/command/CopyFileFromContainerCmdTest.java diff --git a/src/main/java/com/github/dockerjava/client/command/CopyFileFromContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/CopyFileFromContainerCmd.java index dd9742788..60bdf7e7a 100644 --- a/src/main/java/com/github/dockerjava/client/command/CopyFileFromContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/CopyFileFromContainerCmd.java @@ -69,7 +69,7 @@ protected ClientResponse impl() throws DockerException { WebResource.Builder builder = webResource.accept(MediaType.APPLICATION_OCTET_STREAM_TYPE).type("application/json"); - return builder.post(ClientResponse.class, copyConfig.toString()); + return builder.post(ClientResponse.class, copyConfig); } catch (UniformInterfaceException exception) { if (exception.getResponse().getStatus() == 400) { throw new DockerException("bad parameter"); diff --git a/src/test/java/com/github/dockerjava/client/command/CopyFileFromContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/CopyFileFromContainerCmdTest.java new file mode 100644 index 000000000..4ef739887 --- /dev/null +++ b/src/test/java/com/github/dockerjava/client/command/CopyFileFromContainerCmdTest.java @@ -0,0 +1,52 @@ +package com.github.dockerjava.client.command; + +import com.github.dockerjava.client.AbstractDockerClientTest; +import com.sun.jersey.api.client.ClientResponse; +import org.testng.ITestResult; +import org.testng.annotations.*; + +import java.lang.reflect.Method; + +import static org.hamcrest.Matchers.*; +import static org.hamcrest.MatcherAssert.assertThat; + +public class CopyFileFromContainerCmdTest extends AbstractDockerClientTest { + + @BeforeTest + public void beforeTest() { + super.beforeTest(); + } + + @AfterTest + public void afterTest() { + super.afterTest(); + } + + @BeforeMethod + public void beforeMethod(Method method) { + super.beforeMethod(method); + } + + @AfterMethod + public void afterMethod(ITestResult result) { + super.afterMethod(result); + } + + @Test + public void copyFromContainer() { + // TODO extract this into a shared method + CreateContainerResponse container = dockerClient.createContainerCmd("busybox") + .withName("docker-java-itest-copyFromContainer") + .withCmd("touch", "/test") + .exec(); + + LOG.info("Created container: {}", container); + assertThat(container.getId(), not(isEmptyOrNullString())); + + dockerClient.startContainerCmd(container.getId()).exec(); + tmpContainers.add(container.getId()); + + ClientResponse response = dockerClient.copyFileFromContainerCmd(container.getId(), "/test").exec(); + assertTrue(response.getStatus() == 200 && response.hasEntity(), "The file was not copied from the container."); + } +} From 65d42253c2e66d7c9a83b734da709da340545a4d Mon Sep 17 00:00:00 2001 From: Matt Fulgo Date: Thu, 31 Jul 2014 14:02:08 -0400 Subject: [PATCH 05/13] Swaps model toStrings with Commons ToStringBuilder This cuts down on some of the boilerplate code. Since we're already bringing Apache Commons Lang, we might as well use it. --- .../dockerjava/client/model/ChangeLog.java | 6 +-- .../dockerjava/client/model/Container.java | 34 ++++++---------- .../client/model/ContainerConfig.java | 20 ++-------- .../dockerjava/client/model/CopyConfig.java | 3 +- .../client/model/CreateContainerConfig.java | 39 +++++-------------- .../dockerjava/client/model/DriverStatus.java | 6 +-- .../dockerjava/client/model/HostConfig.java | 31 +++++---------- .../github/dockerjava/client/model/Image.java | 10 +---- .../github/dockerjava/client/model/Info.java | 24 ++++-------- .../github/dockerjava/client/model/Ports.java | 23 +++++------ .../dockerjava/client/model/SearchItem.java | 4 +- .../client/model/StartContainerConfig.java | 26 +++++-------- .../dockerjava/client/model/Version.java | 13 ++----- 13 files changed, 76 insertions(+), 163 deletions(-) diff --git a/src/main/java/com/github/dockerjava/client/model/ChangeLog.java b/src/main/java/com/github/dockerjava/client/model/ChangeLog.java index cc4c5ece8..840059691 100644 --- a/src/main/java/com/github/dockerjava/client/model/ChangeLog.java +++ b/src/main/java/com/github/dockerjava/client/model/ChangeLog.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.commons.lang.builder.ToStringBuilder; /** * @@ -27,9 +28,6 @@ public int getKind() { @Override public String toString() { - return "ChangeLog{" + - "path='" + path + '\'' + - ", kind=" + kind + - '}'; + return ToStringBuilder.reflectionToString(this); } } diff --git a/src/main/java/com/github/dockerjava/client/model/Container.java b/src/main/java/com/github/dockerjava/client/model/Container.java index 11d79e671..d323c86df 100644 --- a/src/main/java/com/github/dockerjava/client/model/Container.java +++ b/src/main/java/com/github/dockerjava/client/model/Container.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.commons.lang.builder.ToStringBuilder; import java.util.Arrays; @@ -28,7 +29,7 @@ public class Container { @JsonProperty("Names") private String[] names; - @JsonProperty("Ports") + @JsonProperty("Ports") public Port[] ports; @JsonProperty("Status") @@ -65,17 +66,9 @@ public String[] getNames() { @Override public String toString() { - return "Container{" + - "id='" + id + '\'' + - ", command='" + command + '\'' + - ", image='" + image + '\'' + - ", created=" + created + - ", status='" + status + '\'' + - ", ports=" + Arrays.toString(ports) + - ", names=" + Arrays.toString(names) + - '}'; + return ToStringBuilder.reflectionToString(this); } - + @JsonIgnoreProperties(ignoreUnknown = true) public static class Port { @@ -87,34 +80,29 @@ public static class Port { @JsonProperty("PublicPort") private Integer publicPort; - + @JsonProperty("Type") private String type; - + public String getIp() { return ip; } - + public Integer getPrivatePort() { return privatePort; } - + public Integer getPublicPort() { return publicPort; } - + public String getType() { return type; } - + @Override public String toString() { - return "Port{" + - "IP='" + ip + '\'' + - ", privatePort='" + privatePort + '\'' + - ", publicPort='" + publicPort + '\'' + - ", type='" + type + '\'' + - '}'; + return ToStringBuilder.reflectionToString(this); } } } diff --git a/src/main/java/com/github/dockerjava/client/model/ContainerConfig.java b/src/main/java/com/github/dockerjava/client/model/ContainerConfig.java index 7389169bc..6bbb6eef4 100644 --- a/src/main/java/com/github/dockerjava/client/model/ContainerConfig.java +++ b/src/main/java/com/github/dockerjava/client/model/ContainerConfig.java @@ -6,11 +6,12 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.commons.lang.builder.ToStringBuilder; /** - * + * * @author Konstantin Pelykh (kpelykh@gmail.com) - * + * */ @JsonIgnoreProperties(ignoreUnknown = true) public class ContainerConfig { @@ -179,19 +180,6 @@ public int[] getOnBuild() { @Override public String toString() { - return "ContainerConfig{" + "hostName='" + hostName + '\'' - + ", portSpecs=" + Arrays.toString(portSpecs) + ", user='" - + user + '\'' + ", tty=" + tty + ", stdinOpen=" + stdinOpen - + ", stdInOnce=" + stdInOnce + ", memoryLimit=" + memoryLimit - + ", memorySwap=" + memorySwap + ", cpuShares=" + cpuShares - + ", attachStdin=" + attachStdin + ", attachStdout=" - + attachStdout + ", attachStderr=" + attachStderr + ", env=" - + Arrays.toString(env) + ", cmd=" + Arrays.toString(cmd) - + ", image='" + image + '\'' - + ", volumes=" + volumes - + '\'' + ", entrypoint=" + Arrays.toString(entrypoint) - + ", networkDisabled=" + networkDisabled + ", workingDir='" + workingDir + '\'' - + ", domainName='" + domainName + '\'' + ", onBuild='" - + Arrays.toString(onBuild) + '\'' + '}'; + return ToStringBuilder.reflectionToString(this); } } diff --git a/src/main/java/com/github/dockerjava/client/model/CopyConfig.java b/src/main/java/com/github/dockerjava/client/model/CopyConfig.java index 423cc3363..90ab0657b 100755 --- a/src/main/java/com/github/dockerjava/client/model/CopyConfig.java +++ b/src/main/java/com/github/dockerjava/client/model/CopyConfig.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.commons.lang.builder.ToStringBuilder; /** * Configuration object for copy command. @@ -57,7 +58,7 @@ public void setHostPath(String hostPath) { @Override public String toString() { - return "{\"HostPath\":\"" + hostPath + "\", \"Resource\":\"" + resource + "\"}"; + return ToStringBuilder.reflectionToString(this); } } diff --git a/src/main/java/com/github/dockerjava/client/model/CreateContainerConfig.java b/src/main/java/com/github/dockerjava/client/model/CreateContainerConfig.java index 2ba9c9eb2..d8e00512a 100644 --- a/src/main/java/com/github/dockerjava/client/model/CreateContainerConfig.java +++ b/src/main/java/com/github/dockerjava/client/model/CreateContainerConfig.java @@ -6,11 +6,12 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.commons.lang.builder.ToStringBuilder; /** * * @author Konstantin Pelykh (kpelykh@gmail.com) - * + * * "Hostname":"", "User":"", "Memory":0, @@ -37,7 +38,7 @@ "ExposedPorts":{ "22/tcp": {} } - * + * * */ public class CreateContainerConfig { @@ -62,12 +63,12 @@ public class CreateContainerConfig { @JsonProperty("WorkingDir") private String workingDir = ""; @JsonProperty("DisableNetwork") private boolean disableNetwork = false; @JsonProperty("ExposedPorts") private ExposedPorts exposedPorts = new ExposedPorts(); - + public CreateContainerConfig withExposedPorts(ExposedPort[] exposedPorts) { this.exposedPorts = new ExposedPorts(exposedPorts); return this; } - + @JsonIgnore public ExposedPort[] getExposedPorts() { return exposedPorts.getExposedPorts(); @@ -85,7 +86,7 @@ public CreateContainerConfig withWorkingDir(String workingDir) { return this; } - + public String getHostName() { return hostName; } @@ -248,28 +249,8 @@ public CreateContainerConfig withVolumesFrom(String[] volumesFrom) { @Override public String toString() { - return "CreateContainerConfig{" + - "hostName='" + hostName + '\'' + - ", portSpecs=" + Arrays.toString(portSpecs) + - ", user='" + user + '\'' + - ", tty=" + tty + - ", stdinOpen=" + stdinOpen + - ", stdInOnce=" + stdInOnce + - ", memoryLimit=" + memoryLimit + - ", memorySwap=" + memorySwap + - ", attachStdin=" + attachStdin + - ", attachStdout=" + attachStdout + - ", attachStderr=" + attachStderr + - ", env=" + Arrays.toString(env) + - ", cmd=" + Arrays.toString(cmd) + - ", dns=" + Arrays.toString(dns) + - ", image='" + image + '\'' + - ", volumes=" + volumes + - ", volumesFrom='" + volumesFrom + '\'' + - ", disableNetwork=" + disableNetwork + - ", workingDir='" + workingDir + '\'' + - '}'; - } - - + return ToStringBuilder.reflectionToString(this); + } + + } diff --git a/src/main/java/com/github/dockerjava/client/model/DriverStatus.java b/src/main/java/com/github/dockerjava/client/model/DriverStatus.java index 187e35d59..4c2efe71d 100644 --- a/src/main/java/com/github/dockerjava/client/model/DriverStatus.java +++ b/src/main/java/com/github/dockerjava/client/model/DriverStatus.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.commons.lang.builder.ToStringBuilder; /** * Created by ben on 12/12/13. @@ -25,9 +26,6 @@ public int getDirs() { @Override public String toString() { - return "DriverStatus{" + - "rootDir='" + rootDir + '\'' + - ", dirs=" + dirs + - '}'; + return ToStringBuilder.reflectionToString(this); } } diff --git a/src/main/java/com/github/dockerjava/client/model/HostConfig.java b/src/main/java/com/github/dockerjava/client/model/HostConfig.java index be78c1bd8..4dc55e644 100644 --- a/src/main/java/com/github/dockerjava/client/model/HostConfig.java +++ b/src/main/java/com/github/dockerjava/client/model/HostConfig.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.commons.lang.builder.ToStringBuilder; import java.util.Arrays; @@ -16,52 +17,40 @@ public class HostConfig { @JsonProperty("Binds") public String[] binds; - + @JsonProperty("LxcConf") public LxcConf[] lxcConf; - + @JsonProperty("PortBindings") public Ports portBindings; - + @JsonProperty("PublishAllPorts") public boolean publishAllPorts; - + @JsonProperty("Privileged") public boolean privileged; - + @JsonProperty("Dns") public String dns; - + @JsonProperty("VolumesFrom") public String volumesFrom; @JsonProperty("ContainerIDFile") public String containerIDFile; - + @JsonProperty("DnsSearch") public String dnsSearch; - + @JsonProperty("Links") public String[] links; @JsonProperty("NetworkMode") public String networkMode; - - @Override public String toString() { - return "HostConfig{" + - "binds=" + Arrays.toString(binds) + - ", containerIDFile='" + containerIDFile + '\'' + - ", lxcConf=" + Arrays.toString(lxcConf) + - ", links=" + Arrays.toString(links) + - ", portBindings=" + portBindings + - ", privileged=" + privileged + - ", publishAllPorts=" + publishAllPorts + - ", networkMode=" + networkMode + - ", dns='" + dns + '\'' + - '}'; + return ToStringBuilder.reflectionToString(this); } } diff --git a/src/main/java/com/github/dockerjava/client/model/Image.java b/src/main/java/com/github/dockerjava/client/model/Image.java index 2d6471eb3..a75ebe55d 100644 --- a/src/main/java/com/github/dockerjava/client/model/Image.java +++ b/src/main/java/com/github/dockerjava/client/model/Image.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.commons.lang.builder.ToStringBuilder; import java.util.Arrays; @@ -57,13 +58,6 @@ public long getVirtualSize() { @Override public String toString() { - return "Image{" + - "virtualSize=" + virtualSize + - ", id='" + id + '\'' + - ", repoTags=" + Arrays.toString(repoTags) + - ", parentId='" + parentId + '\'' + - ", created=" + created + - ", size=" + size + - '}'; + return ToStringBuilder.reflectionToString(this); } } diff --git a/src/main/java/com/github/dockerjava/client/model/Info.java b/src/main/java/com/github/dockerjava/client/model/Info.java index 442631d32..6e8386e66 100644 --- a/src/main/java/com/github/dockerjava/client/model/Info.java +++ b/src/main/java/com/github/dockerjava/client/model/Info.java @@ -5,14 +5,15 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import org.apache.commons.lang.builder.ToStringBuilder; import java.util.Arrays; import java.util.List; /** - * + * * @author Konstantin Pelykh (kpelykh@gmail.com) - * + * */ @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) @JsonInclude(Include.NON_NULL) @@ -77,7 +78,7 @@ public boolean isDebug() { public int getContainers() { return containers; } - + public String getDriver() { return driver; } @@ -138,17 +139,8 @@ public String getExecutionDriver() { return executionDriver; } - @Override - public String toString() { - return "Info{" + "debug=" + debug + ", containers=" + containers - + ", driver='" + driver + '\'' + ", driverStatuses=" - + driverStatuses + ", images=" + images + ", IPv4Forwarding='" - + IPv4Forwarding + '\'' + ", IndexServerAddress='" - + IndexServerAddress + '\'' + ", initPath='" + initPath + '\'' - + ", initSha1='" + initSha1 + '\'' + ", kernelVersion='" - + kernelVersion + '\'' + ", sockets='" + Arrays.asList(sockets) + '\'' - + ", memoryLimit=" + memoryLimit + ", nEventListener=" - + nEventListener + ", NFd=" + NFd + ", NGoroutines=" - + NGoroutines + ", swapLimit=" + swapLimit + '}'; - } + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this); + } } diff --git a/src/main/java/com/github/dockerjava/client/model/Ports.java b/src/main/java/com/github/dockerjava/client/model/Ports.java index f4519a8d7..735242ac2 100644 --- a/src/main/java/com/github/dockerjava/client/model/Ports.java +++ b/src/main/java/com/github/dockerjava/client/model/Ports.java @@ -20,6 +20,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.node.NullNode; +import org.apache.commons.lang.builder.ToStringBuilder; @JsonDeserialize(using = Ports.Deserializer.class) @JsonSerialize(using = Ports.Serializer.class) @@ -28,8 +29,8 @@ public class Ports { private final Map ports = new HashMap(); public Ports() { } - - public Ports(ExposedPort exposedPort, Binding host) { + + public Ports(ExposedPort exposedPort, Binding host) { bind(exposedPort, host); } @@ -45,7 +46,7 @@ public String toString(){ public Map getBindings(){ return ports; } - + public static Binding Binding(String hostIp, int hostPort) { return new Binding(hostIp, hostPort); } @@ -65,11 +66,11 @@ public Binding(String hostIp, int hostPort) { this.hostIp = hostIp; this.hostPort = hostPort; } - + public Binding(int hostPort) { this("", hostPort); } - + public String getHostIp() { return hostIp; } @@ -78,15 +79,11 @@ public int getHostPort() { return hostPort; } - @Override public String toString() { - return "PortBinding{" + - "hostIp='" + hostIp + '\'' + - ", hostPort='" + hostPort + '\'' + - '}'; + return ToStringBuilder.reflectionToString(this); } - + @Override public boolean equals(Object obj) { if(obj instanceof Binding) { @@ -98,7 +95,7 @@ public boolean equals(Object obj) { return super.equals(obj); } } - + public static class Deserializer extends JsonDeserializer { @Override @@ -110,7 +107,7 @@ public Ports deserialize(JsonParser jsonParser, DeserializationContext deseriali for (Iterator> it = node.fields(); it.hasNext();) { Map.Entry field = it.next(); - if (!field.getValue().equals(NullNode.getInstance())) { + if (!field.getValue().equals(NullNode.getInstance())) { String hostIp = field.getValue().get(0).get("HostIp").textValue(); int hostPort = field.getValue().get(0).get("HostPort").asInt(); out.bind(ExposedPort.parse(field.getKey()), new Binding(hostIp, hostPort)); diff --git a/src/main/java/com/github/dockerjava/client/model/SearchItem.java b/src/main/java/com/github/dockerjava/client/model/SearchItem.java index 76dadab32..18c680bf6 100644 --- a/src/main/java/com/github/dockerjava/client/model/SearchItem.java +++ b/src/main/java/com/github/dockerjava/client/model/SearchItem.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.commons.lang.builder.ToStringBuilder; /** * @@ -48,7 +49,6 @@ public String getDescription() { @Override public String toString() { - return "name='" + name + '\'' + - ", description='" + description + '\'' + '}'; + return ToStringBuilder.reflectionToString(this); } } diff --git a/src/main/java/com/github/dockerjava/client/model/StartContainerConfig.java b/src/main/java/com/github/dockerjava/client/model/StartContainerConfig.java index ae8088f92..439f17440 100644 --- a/src/main/java/com/github/dockerjava/client/model/StartContainerConfig.java +++ b/src/main/java/com/github/dockerjava/client/model/StartContainerConfig.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.commons.lang.builder.ToStringBuilder; /** * @@ -14,28 +15,28 @@ public class StartContainerConfig { @JsonProperty("Binds") private Binds binds = new Binds(); - + @JsonProperty("Links") private Links links = new Links(); @JsonProperty("LxcConf") private LxcConf[] lxcConf; - + @JsonProperty("PortBindings") private Ports portBindings; - + @JsonProperty("PublishAllPorts") private boolean publishAllPorts; - + @JsonProperty("Privileged") private boolean privileged; - + @JsonProperty("Dns") private String dns; - + @JsonProperty("VolumesFrom") private String volumesFrom; - + @JsonIgnore public Bind[] getBinds() { return binds.getBinds(); @@ -104,16 +105,9 @@ public void setVolumesFrom(String volumesFrom) { this.volumesFrom = volumesFrom; } - @Override + @Override public String toString() { - return "StartContainerConfig{" + - "binds=" + binds + - ", lxcConf=" + Arrays.toString(lxcConf) + - ", portBindings=" + portBindings + - ", privileged=" + privileged + - ", publishAllPorts=" + publishAllPorts + - ", dns='" + dns + '\'' + - '}'; + return ToStringBuilder.reflectionToString(this); } } diff --git a/src/main/java/com/github/dockerjava/client/model/Version.java b/src/main/java/com/github/dockerjava/client/model/Version.java index a01d6c61d..8163802bf 100644 --- a/src/main/java/com/github/dockerjava/client/model/Version.java +++ b/src/main/java/com/github/dockerjava/client/model/Version.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.commons.lang.builder.ToStringBuilder; /** * @@ -22,7 +23,7 @@ public class Version { @JsonProperty("GoVersion") private String goVersion; - + @JsonProperty("KernelVersion") private String kernelVersion; @@ -62,14 +63,6 @@ public String getApiVersion() { @Override public String toString() { - return "Version{" + - "version='" + version + '\'' + - ", gitCommit='" + gitCommit + '\'' + - ", goVersion='" + goVersion + '\'' + - ", kernelVersion='" + kernelVersion + '\'' + - ", arch='" + arch + '\'' + - ", operatingSystem='" + operatingSystem + '\'' + - ", apiVersion='" + apiVersion + '\'' + - '}'; + return ToStringBuilder.reflectionToString(this); } } From 442fa8b532ac467aaaaafb978c89d6b0e62984b8 Mon Sep 17 00:00:00 2001 From: Matt Fulgo Date: Thu, 31 Jul 2014 14:07:58 -0400 Subject: [PATCH 06/13] Swaps responses' toStrings for Commons' ToStringBuilder Replacing more boilder-plate code with something that'll be easier to maintain. --- .../command/CreateContainerResponse.java | 6 +-- .../client/command/CreateImageResponse.java | 7 +--- .../command/InspectContainerResponse.java | 37 ++++--------------- .../client/command/InspectImageResponse.java | 18 ++------- 4 files changed, 14 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/github/dockerjava/client/command/CreateContainerResponse.java b/src/main/java/com/github/dockerjava/client/command/CreateContainerResponse.java index c8a5870e6..3eb9226f8 100644 --- a/src/main/java/com/github/dockerjava/client/command/CreateContainerResponse.java +++ b/src/main/java/com/github/dockerjava/client/command/CreateContainerResponse.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.commons.lang.builder.ToStringBuilder; import java.util.Arrays; @@ -37,9 +38,6 @@ public void setWarnings(String[] warnings) { @Override public String toString() { - return "CreateContainerResponse{" + - "id='" + id + '\'' + - ", warnings=" + Arrays.toString(warnings) + - '}'; + return ToStringBuilder.reflectionToString(this); } } diff --git a/src/main/java/com/github/dockerjava/client/command/CreateImageResponse.java b/src/main/java/com/github/dockerjava/client/command/CreateImageResponse.java index 3c657b9a3..e3f404744 100644 --- a/src/main/java/com/github/dockerjava/client/command/CreateImageResponse.java +++ b/src/main/java/com/github/dockerjava/client/command/CreateImageResponse.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.commons.lang.builder.ToStringBuilder; /** * Parse reponses from /images/create @@ -15,16 +16,12 @@ public class CreateImageResponse { @JsonProperty("status") private String id; - public String getId() { return id; } - @Override public String toString() { - return "CreateImageResponse{" + - "id='" + id + '\'' + - '}'; + return ToStringBuilder.reflectionToString(this); } } diff --git a/src/main/java/com/github/dockerjava/client/command/InspectContainerResponse.java b/src/main/java/com/github/dockerjava/client/command/InspectContainerResponse.java index bdfb5ce59..352cc7cc3 100644 --- a/src/main/java/com/github/dockerjava/client/command/InspectContainerResponse.java +++ b/src/main/java/com/github/dockerjava/client/command/InspectContainerResponse.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.github.dockerjava.client.model.*; +import org.apache.commons.lang.builder.ToStringBuilder; /** * @@ -187,16 +188,9 @@ public Ports getPorts() { } - @Override + @Override public String toString() { - return "NetworkSettings{" + - "ports=" + ports + - ", portMapping=" + portMapping + - ", bridge='" + bridge + '\'' + - ", gateway='" + gateway + '\'' + - ", ipPrefixLen=" + ipPrefixLen + - ", ipAddress='" + ipAddress + '\'' + - '}'; + return ToStringBuilder.reflectionToString(this); } } @@ -234,16 +228,9 @@ public String getFinishedAt() { return finishedAt; } - @Override + @Override public String toString() { - return "ContainerState{" + - "running=" + running + - ", paused=" + paused + - ", pid=" + pid + - ", exitCode=" + exitCode + - ", startedAt='" + startedAt + '\'' + - ", finishedAt='" + finishedAt + '\'' + - '}'; + return ToStringBuilder.reflectionToString(this); } } @@ -328,19 +315,9 @@ public String getNetworkMode() { return networkMode; } - @Override + @Override public String toString() { - return "HostConfig{" + - "binds=" + Arrays.toString(binds) + - ", containerIDFile='" + containerIDFile + '\'' + - ", lxcConf=" + Arrays.toString(lxcConf) + - ", links=" + Arrays.toString(links) + - ", portBindings=" + portBindings + - ", privileged=" + privileged + - ", publishAllPorts=" + publishAllPorts + - ", networkMode=" + networkMode + - ", dns='" + dns + '\'' + - '}'; + return ToStringBuilder.reflectionToString(this); } } diff --git a/src/main/java/com/github/dockerjava/client/command/InspectImageResponse.java b/src/main/java/com/github/dockerjava/client/command/InspectImageResponse.java index 82b634e47..9cc164fb0 100644 --- a/src/main/java/com/github/dockerjava/client/command/InspectImageResponse.java +++ b/src/main/java/com/github/dockerjava/client/command/InspectImageResponse.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.github.dockerjava.client.model.ContainerConfig; +import org.apache.commons.lang.builder.ToStringBuilder; /** * @@ -96,21 +97,8 @@ public String getOs() { return os; } - @Override + @Override public String toString() { - return "InspectImageResponse{" + - "id='" + id + '\'' + - ", parent='" + parent + '\'' + - ", created='" + created + '\'' + - ", container='" + container + '\'' + - ", containerConfig=" + containerConfig + - ", size=" + size + - ", dockerVersion='" + dockerVersion + '\'' + - ", config=" + config + - ", arch='" + arch + '\'' + - ", comment='" + comment + '\'' + - ", author='" + author + '\'' + - ", os='" + os + '\'' + - '}'; + return ToStringBuilder.reflectionToString(this); } } From 476dafc2ff3a0eda247dc684f8cdd20115b09d6c Mon Sep 17 00:00:00 2001 From: Matt Fulgo Date: Fri, 1 Aug 2014 12:05:31 -0400 Subject: [PATCH 07/13] Moves CommitConfig into CommitCmd This is the first step toward simplifying or getting rid of the CommitConfig object. --- .../dockerjava/client/command/CommitCmd.java | 216 ++++++++++++++++-- .../dockerjava/client/model/CommitConfig.java | 201 ---------------- 2 files changed, 202 insertions(+), 215 deletions(-) delete mode 100644 src/main/java/com/github/dockerjava/client/model/CommitConfig.java diff --git a/src/main/java/com/github/dockerjava/client/command/CommitCmd.java b/src/main/java/com/github/dockerjava/client/command/CommitCmd.java index 67bf5b0aa..12116e7f2 100644 --- a/src/main/java/com/github/dockerjava/client/command/CommitCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/CommitCmd.java @@ -3,19 +3,20 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.github.dockerjava.client.model.ExposedPorts; +import com.github.dockerjava.client.model.Volumes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.node.ObjectNode; import com.github.dockerjava.client.DockerException; import com.github.dockerjava.client.NotFoundException; -import com.github.dockerjava.client.model.CommitConfig; import com.google.common.base.Preconditions; import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.api.client.WebResource; import com.sun.jersey.core.util.MultivaluedMapImpl; - /** * * Create a new image from a container's changes. Returns the new image ID. @@ -60,12 +61,6 @@ public boolean hasPauseEnabled() { return pause; } - public CommitCmd withCommitConfig(CommitConfig commitConfig) { - checkCommitConfig(commitConfig); - this.commitConfig = commitConfig; - return this; - } - public CommitCmd withAttachStderr(boolean attachStderr) { this.commitConfig.setAttachStderr(attachStderr); return this; @@ -144,13 +139,7 @@ public String toString() { .toString(); } - private void checkCommitConfig(CommitConfig commitConfig) { - Preconditions.checkNotNull(commitConfig, "CommitConfig was not specified"); - } - protected String impl() throws DockerException { - checkCommitConfig(commitConfig); - MultivaluedMap params = new MultivaluedMapImpl(); params.add("container", containerId); params.add("repo", repository); @@ -177,4 +166,203 @@ protected String impl() throws DockerException { throw new DockerException(e); } } + + /** + * + * @author Konstantin Pelykh (kpelykh@gmail.com) + * + */ + // TODO Simplify this + private static class CommitConfig { + + @JsonProperty("AttachStdin") + private boolean attachStdin; + + @JsonProperty("AttachStdout") + private boolean attachStdout; + + @JsonProperty("AttachStderr") + private boolean attachStderr; + + @JsonProperty("Cmd") + private String[] cmd; + + @JsonProperty("DisableNetwork") + private boolean disableNetwork; + + @JsonProperty("Env") + private String[] env; + + @JsonProperty("ExposedPorts") + private ExposedPorts exposedPorts; + + @JsonProperty("Hostname") + private String hostname; + + @JsonProperty("Memory") + private Integer memory; + + @JsonProperty("MemorySwap") + private Integer memorySwap; + + @JsonProperty("OpenStdin") + private boolean openStdin; + + @JsonProperty("PortSpecs") + private String[] portSpecs; + + @JsonProperty("StdinOnce") + private boolean stdinOnce; + + @JsonProperty("Tty") + private boolean tty; + + @JsonProperty("User") + private String user; + + @JsonProperty("Volumes") + private Volumes volumes; + + @JsonProperty("WorkingDir") + private String workingDir; + + public boolean isAttachStdin() { + return attachStdin; + } + + public void setAttachStdin(boolean attachStdin) { + this.attachStdin = attachStdin; + } + + public boolean isAttachStdout() { + return attachStdout; + } + + public void setAttachStdout(boolean attachStdout) { + this.attachStdout = attachStdout; + } + + public boolean isAttachStderr() { + return attachStderr; + } + + public void setAttachStderr(boolean attachStderr) { + this.attachStderr = attachStderr; + } + + public String[] getCmd() { + return cmd; + } + + public void setCmd(String[] cmd) { + this.cmd = cmd; + } + + public boolean isDisableNetwork() { + return disableNetwork; + } + + public void setDisableNetwork(boolean disableNetwork) { + this.disableNetwork = disableNetwork; + } + + public String[] getEnv() { + return env; + } + + public void setEnv(String[] env) { + this.env = env; + } + + public ExposedPorts getExposedPorts() { + return exposedPorts; + } + + public void setExposedPorts(ExposedPorts exposedPorts) { + this.exposedPorts = exposedPorts; + } + + public String getHostname() { + return hostname; + } + + public void setHostname(String hostname) { + this.hostname = hostname; + } + + public Integer getMemory() { + return memory; + } + + public void setMemory(Integer memory) { + this.memory = memory; + } + + public Integer getMemorySwap() { + return memorySwap; + } + + public void setMemorySwap(Integer memorySwap) { + this.memorySwap = memorySwap; + } + + public boolean isOpenStdin() { + return openStdin; + } + + public void setOpenStdin(boolean openStdin) { + this.openStdin = openStdin; + } + + public String[] getPortSpecs() { + return portSpecs; + } + + public void setPortSpecs(String[] portSpecs) { + this.portSpecs = portSpecs; + } + + public boolean isStdinOnce() { + return stdinOnce; + } + + public void setStdinOnce(boolean stdinOnce) { + this.stdinOnce = stdinOnce; + } + + public boolean isTty() { + return tty; + } + + public void setTty(boolean tty) { + this.tty = tty; + } + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public Volumes getVolumes() { + return volumes; + } + + public void setVolumes(Volumes volumes) { + this.volumes = volumes; + } + + public String getWorkingDir() { + return workingDir; + } + + public void setWorkingDir(String workingDir) { + this.workingDir = workingDir; + } + + + + } } diff --git a/src/main/java/com/github/dockerjava/client/model/CommitConfig.java b/src/main/java/com/github/dockerjava/client/model/CommitConfig.java deleted file mode 100644 index 309570d92..000000000 --- a/src/main/java/com/github/dockerjava/client/model/CommitConfig.java +++ /dev/null @@ -1,201 +0,0 @@ -package com.github.dockerjava.client.model; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * - * @author Konstantin Pelykh (kpelykh@gmail.com) - * - */ -public class CommitConfig { - - @JsonProperty("AttachStdin") - private boolean attachStdin; - - @JsonProperty("AttachStdout") - private boolean attachStdout; - - @JsonProperty("AttachStderr") - private boolean attachStderr; - - @JsonProperty("Cmd") - private String[] cmd; - - @JsonProperty("DisableNetwork") - private boolean disableNetwork; - - @JsonProperty("Env") - private String[] env; - - @JsonProperty("ExposedPorts") - private ExposedPorts exposedPorts; - - @JsonProperty("Hostname") - private String hostname; - - @JsonProperty("Memory") - private Integer memory; - - @JsonProperty("MemorySwap") - private Integer memorySwap; - - @JsonProperty("OpenStdin") - private boolean openStdin; - - @JsonProperty("PortSpecs") - private String[] portSpecs; - - @JsonProperty("StdinOnce") - private boolean stdinOnce; - - @JsonProperty("Tty") - private boolean tty; - - @JsonProperty("User") - private String user; - - @JsonProperty("Volumes") - private Volumes volumes; - - @JsonProperty("WorkingDir") - private String workingDir; - - public boolean isAttachStdin() { - return attachStdin; - } - - public void setAttachStdin(boolean attachStdin) { - this.attachStdin = attachStdin; - } - - public boolean isAttachStdout() { - return attachStdout; - } - - public void setAttachStdout(boolean attachStdout) { - this.attachStdout = attachStdout; - } - - public boolean isAttachStderr() { - return attachStderr; - } - - public void setAttachStderr(boolean attachStderr) { - this.attachStderr = attachStderr; - } - - public String[] getCmd() { - return cmd; - } - - public void setCmd(String[] cmd) { - this.cmd = cmd; - } - - public boolean isDisableNetwork() { - return disableNetwork; - } - - public void setDisableNetwork(boolean disableNetwork) { - this.disableNetwork = disableNetwork; - } - - public String[] getEnv() { - return env; - } - - public void setEnv(String[] env) { - this.env = env; - } - - public ExposedPorts getExposedPorts() { - return exposedPorts; - } - - public void setExposedPorts(ExposedPorts exposedPorts) { - this.exposedPorts = exposedPorts; - } - - public String getHostname() { - return hostname; - } - - public void setHostname(String hostname) { - this.hostname = hostname; - } - - public Integer getMemory() { - return memory; - } - - public void setMemory(Integer memory) { - this.memory = memory; - } - - public Integer getMemorySwap() { - return memorySwap; - } - - public void setMemorySwap(Integer memorySwap) { - this.memorySwap = memorySwap; - } - - public boolean isOpenStdin() { - return openStdin; - } - - public void setOpenStdin(boolean openStdin) { - this.openStdin = openStdin; - } - - public String[] getPortSpecs() { - return portSpecs; - } - - public void setPortSpecs(String[] portSpecs) { - this.portSpecs = portSpecs; - } - - public boolean isStdinOnce() { - return stdinOnce; - } - - public void setStdinOnce(boolean stdinOnce) { - this.stdinOnce = stdinOnce; - } - - public boolean isTty() { - return tty; - } - - public void setTty(boolean tty) { - this.tty = tty; - } - - public String getUser() { - return user; - } - - public void setUser(String user) { - this.user = user; - } - - public Volumes getVolumes() { - return volumes; - } - - public void setVolumes(Volumes volumes) { - this.volumes = volumes; - } - - public String getWorkingDir() { - return workingDir; - } - - public void setWorkingDir(String workingDir) { - this.workingDir = workingDir; - } - - - -} From 8d572c6e9ce4e2aead81353ca09713e796bd10f7 Mon Sep 17 00:00:00 2001 From: Matt Fulgo Date: Fri, 1 Aug 2014 17:09:06 -0400 Subject: [PATCH 08/13] Fixes a bug in the InfoCmdTest If you don't have any of your own containers, the InfoCmd integration test can fail. This commit makes sure there's at least one container present. --- .../client/command/InfoCmdTest.java | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/github/dockerjava/client/command/InfoCmdTest.java b/src/test/java/com/github/dockerjava/client/command/InfoCmdTest.java index a44e68727..5ef90cd42 100644 --- a/src/test/java/com/github/dockerjava/client/command/InfoCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/InfoCmdTest.java @@ -13,13 +13,17 @@ import com.github.dockerjava.client.DockerException; import com.github.dockerjava.client.model.Info; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.isEmptyOrNullString; +import static org.hamcrest.Matchers.not; + public class InfoCmdTest extends AbstractDockerClientTest { @BeforeTest public void beforeTest() throws DockerException { super.beforeTest(); } - + @AfterTest public void afterTest() { super.afterTest(); @@ -34,10 +38,23 @@ public void beforeMethod(Method method) { public void afterMethod(ITestResult result) { super.afterMethod(result); } - + @Test public void info() throws DockerException { - Info dockerInfo = dockerClient.infoCmd().exec(); + // Make sure that there is at least one container for the assertion + // TODO extract this into a shared method + CreateContainerResponse container = dockerClient.createContainerCmd("busybox") + .withName("docker-java-itest-info") + .withCmd("touch", "/test") + .exec(); + + LOG.info("Created container: {}", container); + assertThat(container.getId(), not(isEmptyOrNullString())); + + dockerClient.startContainerCmd(container.getId()).exec(); + tmpContainers.add(container.getId()); + + Info dockerInfo = dockerClient.infoCmd().exec(); LOG.info(dockerInfo.toString()); assertTrue(dockerInfo.toString().contains("containers")); From 14f911e5e2a4c5c562dde625abad21f9a1a7e692 Mon Sep 17 00:00:00 2001 From: Matt Fulgo Date: Fri, 1 Aug 2014 17:10:48 -0400 Subject: [PATCH 09/13] Adds some TODOs --- src/main/java/com/github/dockerjava/client/DockerClient.java | 5 +++-- .../github/dockerjava/client/command/PushImageCmdTest.java | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/dockerjava/client/DockerClient.java b/src/main/java/com/github/dockerjava/client/DockerClient.java index 09bd70176..dd39cd760 100644 --- a/src/main/java/com/github/dockerjava/client/DockerClient.java +++ b/src/main/java/com/github/dockerjava/client/DockerClient.java @@ -105,9 +105,9 @@ public DockerClient(Config config, CommandFactory cmdFactory) { if (config.isLoggingFilterEnabled()) client.addFilter(new SelectiveLoggingFilter()); - + WebResource webResource = client.resource(config.getUri()); - + if(config.getVersion() != null) { baseResource = webResource.path("v" + config.getVersion()); } else { @@ -326,6 +326,7 @@ public TagImageCmd tagImageCmd(String imageId, String repository, String tag) { } + // TODO This is only being used by the test code for logging. Is it really necessary? /** * @return The output slurped into a string. */ diff --git a/src/test/java/com/github/dockerjava/client/command/PushImageCmdTest.java b/src/test/java/com/github/dockerjava/client/command/PushImageCmdTest.java index 0e1dcf1ba..d5e175e16 100644 --- a/src/test/java/com/github/dockerjava/client/command/PushImageCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/PushImageCmdTest.java @@ -67,6 +67,7 @@ public void testPushLatest() throws Exception { dockerClient.removeImageCmd(imageId).exec(); + // TODO This can fail intermittently if run with other tests. assertThat(asString(dockerClient.pullImageCmd(username + "/busybox").exec()), not(containsString("404"))); tmpImgs.add(username + "/busybox"); From f8e3d3ad5847eae79367ec0ff5435c91d1b26318 Mon Sep 17 00:00:00 2001 From: Matt Fulgo Date: Fri, 1 Aug 2014 17:31:01 -0400 Subject: [PATCH 10/13] Moves more Config objects into their assoc Cmds This effectively hides the config objects from the public API, as I expect they'll either go away or get simplified. --- .../command/CopyFileFromContainerCmd.java | 63 ++++- .../client/command/CreateContainerCmd.java | 256 +++++++++++++++++- .../client/command/StartContainerCmd.java | 114 +++++++- .../dockerjava/client/model/CopyConfig.java | 64 ----- .../client/model/CreateContainerConfig.java | 256 ------------------ .../client/model/StartContainerConfig.java | 113 -------- 6 files changed, 423 insertions(+), 443 deletions(-) delete mode 100755 src/main/java/com/github/dockerjava/client/model/CopyConfig.java delete mode 100644 src/main/java/com/github/dockerjava/client/model/CreateContainerConfig.java delete mode 100644 src/main/java/com/github/dockerjava/client/model/StartContainerConfig.java diff --git a/src/main/java/com/github/dockerjava/client/command/CopyFileFromContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/CopyFileFromContainerCmd.java index 60bdf7e7a..5b46fe00c 100644 --- a/src/main/java/com/github/dockerjava/client/command/CopyFileFromContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/CopyFileFromContainerCmd.java @@ -2,11 +2,13 @@ import javax.ws.rs.core.MediaType; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.commons.lang.builder.ToStringBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.CopyConfig; import com.google.common.base.Preconditions; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.UniformInterfaceException; @@ -82,4 +84,63 @@ protected ClientResponse impl() throws DockerException { } } } + + /** + * Configuration object for copy command. + * @author Victor Lyuboslavsky + */ + @JsonIgnoreProperties(ignoreUnknown = true) + private static class CopyConfig { + + @JsonProperty("HostPath") + private String hostPath; + + @JsonProperty("Resource") + private String resource; + + /** + * Constructor. + */ + public CopyConfig() { + hostPath = "."; + } + + /** + * Retrieves the 'resource' variable. + * @return the 'resource' variable value + */ + public String getResource() { + return resource; + } + + /** + * Sets the 'resource' variable. + * @param resource the new 'resource' variable value to set + */ + public void setResource(String resource) { + this.resource = resource; + } + + /** + * Retrieves the 'hostPath' variable. + * @return the 'hostPath' variable value + */ + public String getHostPath() { + return hostPath; + } + + /** + * Sets the 'hostPath' variable. + * @param hostPath the new 'hostPath' variable value to set + */ + public void setHostPath(String hostPath) { + this.hostPath = hostPath; + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this); + } + + } } diff --git a/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java index a8456e3b1..8934076d7 100644 --- a/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java @@ -3,14 +3,15 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.github.dockerjava.client.model.*; +import org.apache.commons.lang.builder.ToStringBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.dockerjava.client.DockerException; import com.github.dockerjava.client.NotFoundException; -import com.github.dockerjava.client.model.CreateContainerConfig; -import com.github.dockerjava.client.model.ExposedPort; -import com.github.dockerjava.client.model.Volume; import com.google.common.base.Preconditions; import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.api.client.WebResource; @@ -35,7 +36,7 @@ public CreateContainerCmd(String image) { this.containerCreateConfig.withImage(image); } - public CreateContainerCmd(CreateContainerConfig config) { + private CreateContainerCmd(CreateContainerConfig config) { Preconditions.checkNotNull(config, "config was not specified"); this.containerCreateConfig = config; } @@ -125,4 +126,251 @@ protected CreateContainerResponse impl() { } } } + + /** + * + * @author Konstantin Pelykh (kpelykh@gmail.com) + * + * "Hostname":"", + "User":"", + "Memory":0, + "MemorySwap":0, + "AttachStdin":false, + "AttachStdout":true, + "AttachStderr":true, + "PortSpecs":null, + "Tty":false, + "OpenStdin":false, + "StdinOnce":false, + "Env":null, + "Cmd":[ + "date" + ], + "Dns":null, + "Image":"base", + "Volumes":{ + "/tmp": {} + }, + "VolumesFrom":"", + "WorkingDir":"", + "DisableNetwork": false, + "ExposedPorts":{ + "22/tcp": {} + } + * + * + */ + private static class CreateContainerConfig { + + @JsonProperty("Hostname") private String hostName = ""; + @JsonProperty("User") private String user = ""; + @JsonProperty("Memory") private long memoryLimit = 0; + @JsonProperty("MemorySwap") private long memorySwap = 0; + @JsonProperty("AttachStdin") private boolean attachStdin = false; + @JsonProperty("AttachStdout") private boolean attachStdout = false; + @JsonProperty("AttachStderr") private boolean attachStderr = false; + @JsonProperty("PortSpecs") private String[] portSpecs; + @JsonProperty("Tty") private boolean tty = false; + @JsonProperty("OpenStdin") private boolean stdinOpen = false; + @JsonProperty("StdinOnce") private boolean stdInOnce = false; + @JsonProperty("Env") private String[] env; + @JsonProperty("Cmd") private String[] cmd; + @JsonProperty("Dns") private String[] dns; + @JsonProperty("Image") private String image; + @JsonProperty("Volumes") private Volumes volumes = new Volumes(); + @JsonProperty("VolumesFrom") private String[] volumesFrom = new String[]{}; + @JsonProperty("WorkingDir") private String workingDir = ""; + @JsonProperty("DisableNetwork") private boolean disableNetwork = false; + @JsonProperty("ExposedPorts") private ExposedPorts exposedPorts = new ExposedPorts(); + + public CreateContainerConfig withExposedPorts(ExposedPort[] exposedPorts) { + this.exposedPorts = new ExposedPorts(exposedPorts); + return this; + } + + @JsonIgnore + public ExposedPort[] getExposedPorts() { + return exposedPorts.getExposedPorts(); + } + + + public boolean isDisableNetwork() { + return disableNetwork; + } + + public String getWorkingDir() { return workingDir; } + + public CreateContainerConfig withWorkingDir(String workingDir) { + this.workingDir = workingDir; + return this; + } + + + public String getHostName() { + return hostName; + } + + public CreateContainerConfig withDisableNetwork(boolean disableNetwork) { + this.disableNetwork = disableNetwork; + return this; + } + + public CreateContainerConfig withHostName(String hostName) { + this.hostName = hostName; + return this; + } + + public String[] getPortSpecs() { + return portSpecs; + } + + public CreateContainerConfig withPortSpecs(String[] portSpecs) { + this.portSpecs = portSpecs; + return this; + } + + public String getUser() { + return user; + } + + public CreateContainerConfig withUser(String user) { + this.user = user; + return this; + } + + public boolean isTty() { + return tty; + } + + public CreateContainerConfig withTty(boolean tty) { + this.tty = tty; + return this; + } + + public boolean isStdinOpen() { + return stdinOpen; + } + + public CreateContainerConfig withStdinOpen(boolean stdinOpen) { + this.stdinOpen = stdinOpen; + return this; + } + + public boolean isStdInOnce() { + return stdInOnce; + } + + public CreateContainerConfig withStdInOnce(boolean stdInOnce) { + this.stdInOnce = stdInOnce; + return this; + } + + public long getMemoryLimit() { + return memoryLimit; + } + + public CreateContainerConfig withMemoryLimit(long memoryLimit) { + this.memoryLimit = memoryLimit; + return this; + } + + public long getMemorySwap() { + return memorySwap; + } + + public CreateContainerConfig withMemorySwap(long memorySwap) { + this.memorySwap = memorySwap; + return this; + } + + + public boolean isAttachStdin() { + return attachStdin; + } + + public CreateContainerConfig withAttachStdin(boolean attachStdin) { + this.attachStdin = attachStdin; + return this; + } + + public boolean isAttachStdout() { + return attachStdout; + } + + public CreateContainerConfig withAttachStdout(boolean attachStdout) { + this.attachStdout = attachStdout; + return this; + } + + public boolean isAttachStderr() { + return attachStderr; + } + + public CreateContainerConfig withAttachStderr(boolean attachStderr) { + this.attachStderr = attachStderr; + return this; + } + + public String[] getEnv() { + return env; + } + + public CreateContainerConfig withEnv(String[] env) { + this.env = env; + return this; + } + + public String[] getCmd() { + return cmd; + } + + public CreateContainerConfig withCmd(String[] cmd) { + this.cmd = cmd; + return this; + } + + public String[] getDns() { + return dns; + } + + public CreateContainerConfig withDns(String[] dns) { + this.dns = dns; + return this; + } + + public String getImage() { + return image; + } + + public CreateContainerConfig withImage(String image) { + this.image = image; + return this; + } + + @JsonIgnore + public Volume[] getVolumes() { + return volumes.getVolumes(); + } + + public CreateContainerConfig withVolumes(Volume[] volumes) { + this.volumes = new Volumes(volumes); + return this; + } + + public String[] getVolumesFrom() { + return volumesFrom; + } + + public CreateContainerConfig withVolumesFrom(String[] volumesFrom) { + this.volumesFrom = volumesFrom; + return this; + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this); + } + + + } } 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 49901e939..f657c8034 100644 --- a/src/main/java/com/github/dockerjava/client/command/StartContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/StartContainerCmd.java @@ -3,16 +3,15 @@ import javax.ws.rs.core.MediaType; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.github.dockerjava.client.model.*; +import org.apache.commons.lang.builder.ToStringBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.dockerjava.client.DockerException; import com.github.dockerjava.client.NotFoundException; -import com.github.dockerjava.client.model.Bind; -import com.github.dockerjava.client.model.Link; -import com.github.dockerjava.client.model.LxcConf; -import com.github.dockerjava.client.model.Ports; -import com.github.dockerjava.client.model.StartContainerConfig; import com.google.common.base.Preconditions; import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.api.client.WebResource; @@ -128,4 +127,109 @@ protected Void impl() throws DockerException { return null; } + + /** + * + * @author Konstantin Pelykh (kpelykh@gmail.com) + * + */ + private static class StartContainerConfig { + + @JsonProperty("Binds") + private Binds binds = new Binds(); + + @JsonProperty("Links") + private Links links = new Links(); + + @JsonProperty("LxcConf") + private LxcConf[] lxcConf; + + @JsonProperty("PortBindings") + private Ports portBindings; + + @JsonProperty("PublishAllPorts") + private boolean publishAllPorts; + + @JsonProperty("Privileged") + private boolean privileged; + + @JsonProperty("Dns") + private String dns; + + @JsonProperty("VolumesFrom") + private String volumesFrom; + + @JsonIgnore + public Bind[] getBinds() { + return binds.getBinds(); + } + + @JsonIgnore + public void setBinds(Bind[] binds) { + this.binds = new Binds(binds); + } + + @JsonIgnore + public Link[] getLinks() { + return links.getLinks(); + } + + @JsonIgnore + public void setLinks(Link[] links) { + this.links = new Links(links); + } + + public LxcConf[] getLxcConf() { + return lxcConf; + } + + public void setLxcConf(LxcConf[] lxcConf) { + this.lxcConf = lxcConf; + } + + public Ports getPortBindings() { + return portBindings; + } + + public void setPortBindings(Ports portBindings) { + this.portBindings = portBindings; + } + + public boolean isPublishAllPorts() { + return publishAllPorts; + } + + public void setPublishAllPorts(boolean publishAllPorts) { + this.publishAllPorts = publishAllPorts; + } + + public boolean isPrivileged() { + return privileged; + } + + public void setPrivileged(boolean privileged) { + this.privileged = privileged; + } + + public String getDns() { + return dns; + } + + public void setDns(String dns) { + this.dns = dns; + } + + public String getVolumesFrom() { + return volumesFrom; + } + + public void setVolumesFrom(String volumesFrom) { + this.volumesFrom = volumesFrom; + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this); + } + } } diff --git a/src/main/java/com/github/dockerjava/client/model/CopyConfig.java b/src/main/java/com/github/dockerjava/client/model/CopyConfig.java deleted file mode 100755 index 90ab0657b..000000000 --- a/src/main/java/com/github/dockerjava/client/model/CopyConfig.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.github.dockerjava.client.model; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.commons.lang.builder.ToStringBuilder; - -/** - * Configuration object for copy command. - * @author Victor Lyuboslavsky - */ -@JsonIgnoreProperties(ignoreUnknown = true) -public class CopyConfig { - - @JsonProperty("HostPath") - private String hostPath; - - @JsonProperty("Resource") - private String resource; - - /** - * Constructor. - */ - public CopyConfig() { - hostPath = "."; - } - - /** - * Retrieves the 'resource' variable. - * @return the 'resource' variable value - */ - public String getResource() { - return resource; - } - - /** - * Sets the 'resource' variable. - * @param resource the new 'resource' variable value to set - */ - public void setResource(String resource) { - this.resource = resource; - } - - /** - * Retrieves the 'hostPath' variable. - * @return the 'hostPath' variable value - */ - public String getHostPath() { - return hostPath; - } - - /** - * Sets the 'hostPath' variable. - * @param hostPath the new 'hostPath' variable value to set - */ - public void setHostPath(String hostPath) { - this.hostPath = hostPath; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} diff --git a/src/main/java/com/github/dockerjava/client/model/CreateContainerConfig.java b/src/main/java/com/github/dockerjava/client/model/CreateContainerConfig.java deleted file mode 100644 index d8e00512a..000000000 --- a/src/main/java/com/github/dockerjava/client/model/CreateContainerConfig.java +++ /dev/null @@ -1,256 +0,0 @@ -package com.github.dockerjava.client.model; - - -import java.util.Arrays; -import java.util.Map; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.commons.lang.builder.ToStringBuilder; - -/** - * - * @author Konstantin Pelykh (kpelykh@gmail.com) - * - * "Hostname":"", - "User":"", - "Memory":0, - "MemorySwap":0, - "AttachStdin":false, - "AttachStdout":true, - "AttachStderr":true, - "PortSpecs":null, - "Tty":false, - "OpenStdin":false, - "StdinOnce":false, - "Env":null, - "Cmd":[ - "date" - ], - "Dns":null, - "Image":"base", - "Volumes":{ - "/tmp": {} - }, - "VolumesFrom":"", - "WorkingDir":"", - "DisableNetwork": false, - "ExposedPorts":{ - "22/tcp": {} - } - * - * - */ -public class CreateContainerConfig { - - @JsonProperty("Hostname") private String hostName = ""; - @JsonProperty("User") private String user = ""; - @JsonProperty("Memory") private long memoryLimit = 0; - @JsonProperty("MemorySwap") private long memorySwap = 0; - @JsonProperty("AttachStdin") private boolean attachStdin = false; - @JsonProperty("AttachStdout") private boolean attachStdout = false; - @JsonProperty("AttachStderr") private boolean attachStderr = false; - @JsonProperty("PortSpecs") private String[] portSpecs; - @JsonProperty("Tty") private boolean tty = false; - @JsonProperty("OpenStdin") private boolean stdinOpen = false; - @JsonProperty("StdinOnce") private boolean stdInOnce = false; - @JsonProperty("Env") private String[] env; - @JsonProperty("Cmd") private String[] cmd; - @JsonProperty("Dns") private String[] dns; - @JsonProperty("Image") private String image; - @JsonProperty("Volumes") private Volumes volumes = new Volumes(); - @JsonProperty("VolumesFrom") private String[] volumesFrom = new String[]{}; - @JsonProperty("WorkingDir") private String workingDir = ""; - @JsonProperty("DisableNetwork") private boolean disableNetwork = false; - @JsonProperty("ExposedPorts") private ExposedPorts exposedPorts = new ExposedPorts(); - - public CreateContainerConfig withExposedPorts(ExposedPort[] exposedPorts) { - this.exposedPorts = new ExposedPorts(exposedPorts); - return this; - } - - @JsonIgnore - public ExposedPort[] getExposedPorts() { - return exposedPorts.getExposedPorts(); - } - - - public boolean isDisableNetwork() { - return disableNetwork; - } - - public String getWorkingDir() { return workingDir; } - - public CreateContainerConfig withWorkingDir(String workingDir) { - this.workingDir = workingDir; - return this; - } - - - public String getHostName() { - return hostName; - } - - public CreateContainerConfig withDisableNetwork(boolean disableNetwork) { - this.disableNetwork = disableNetwork; - return this; - } - - public CreateContainerConfig withHostName(String hostName) { - this.hostName = hostName; - return this; - } - - public String[] getPortSpecs() { - return portSpecs; - } - - public CreateContainerConfig withPortSpecs(String[] portSpecs) { - this.portSpecs = portSpecs; - return this; - } - - public String getUser() { - return user; - } - - public CreateContainerConfig withUser(String user) { - this.user = user; - return this; - } - - public boolean isTty() { - return tty; - } - - public CreateContainerConfig withTty(boolean tty) { - this.tty = tty; - return this; - } - - public boolean isStdinOpen() { - return stdinOpen; - } - - public CreateContainerConfig withStdinOpen(boolean stdinOpen) { - this.stdinOpen = stdinOpen; - return this; - } - - public boolean isStdInOnce() { - return stdInOnce; - } - - public CreateContainerConfig withStdInOnce(boolean stdInOnce) { - this.stdInOnce = stdInOnce; - return this; - } - - public long getMemoryLimit() { - return memoryLimit; - } - - public CreateContainerConfig withMemoryLimit(long memoryLimit) { - this.memoryLimit = memoryLimit; - return this; - } - - public long getMemorySwap() { - return memorySwap; - } - - public CreateContainerConfig withMemorySwap(long memorySwap) { - this.memorySwap = memorySwap; - return this; - } - - - public boolean isAttachStdin() { - return attachStdin; - } - - public CreateContainerConfig withAttachStdin(boolean attachStdin) { - this.attachStdin = attachStdin; - return this; - } - - public boolean isAttachStdout() { - return attachStdout; - } - - public CreateContainerConfig withAttachStdout(boolean attachStdout) { - this.attachStdout = attachStdout; - return this; - } - - public boolean isAttachStderr() { - return attachStderr; - } - - public CreateContainerConfig withAttachStderr(boolean attachStderr) { - this.attachStderr = attachStderr; - return this; - } - - public String[] getEnv() { - return env; - } - - public CreateContainerConfig withEnv(String[] env) { - this.env = env; - return this; - } - - public String[] getCmd() { - return cmd; - } - - public CreateContainerConfig withCmd(String[] cmd) { - this.cmd = cmd; - return this; - } - - public String[] getDns() { - return dns; - } - - public CreateContainerConfig withDns(String[] dns) { - this.dns = dns; - return this; - } - - public String getImage() { - return image; - } - - public CreateContainerConfig withImage(String image) { - this.image = image; - return this; - } - - @JsonIgnore - public Volume[] getVolumes() { - return volumes.getVolumes(); - } - - public CreateContainerConfig withVolumes(Volume[] volumes) { - this.volumes = new Volumes(volumes); - return this; - } - - public String[] getVolumesFrom() { - return volumesFrom; - } - - public CreateContainerConfig withVolumesFrom(String[] volumesFrom) { - this.volumesFrom = volumesFrom; - return this; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - - -} diff --git a/src/main/java/com/github/dockerjava/client/model/StartContainerConfig.java b/src/main/java/com/github/dockerjava/client/model/StartContainerConfig.java deleted file mode 100644 index 439f17440..000000000 --- a/src/main/java/com/github/dockerjava/client/model/StartContainerConfig.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.github.dockerjava.client.model; - -import java.util.Arrays; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.commons.lang.builder.ToStringBuilder; - -/** - * - * @author Konstantin Pelykh (kpelykh@gmail.com) - * - */ -public class StartContainerConfig { - - @JsonProperty("Binds") - private Binds binds = new Binds(); - - @JsonProperty("Links") - private Links links = new Links(); - - @JsonProperty("LxcConf") - private LxcConf[] lxcConf; - - @JsonProperty("PortBindings") - private Ports portBindings; - - @JsonProperty("PublishAllPorts") - private boolean publishAllPorts; - - @JsonProperty("Privileged") - private boolean privileged; - - @JsonProperty("Dns") - private String dns; - - @JsonProperty("VolumesFrom") - private String volumesFrom; - - @JsonIgnore - public Bind[] getBinds() { - return binds.getBinds(); - } - - @JsonIgnore - public void setBinds(Bind[] binds) { - this.binds = new Binds(binds); - } - - @JsonIgnore - public Link[] getLinks() { - return links.getLinks(); - } - - @JsonIgnore - public void setLinks(Link[] links) { - this.links = new Links(links); - } - - public LxcConf[] getLxcConf() { - return lxcConf; - } - - public void setLxcConf(LxcConf[] lxcConf) { - this.lxcConf = lxcConf; - } - - public Ports getPortBindings() { - return portBindings; - } - - public void setPortBindings(Ports portBindings) { - this.portBindings = portBindings; - } - - public boolean isPublishAllPorts() { - return publishAllPorts; - } - - public void setPublishAllPorts(boolean publishAllPorts) { - this.publishAllPorts = publishAllPorts; - } - - public boolean isPrivileged() { - return privileged; - } - - public void setPrivileged(boolean privileged) { - this.privileged = privileged; - } - - public String getDns() { - return dns; - } - - public void setDns(String dns) { - this.dns = dns; - } - - public String getVolumesFrom() { - return volumesFrom; - } - - public void setVolumesFrom(String volumesFrom) { - this.volumesFrom = volumesFrom; - } - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } -} - From 52c7d2abd22b168ad712de4f622ffab6ef31fbf8 Mon Sep 17 00:00:00 2001 From: Matt Fulgo Date: Fri, 1 Aug 2014 17:36:02 -0400 Subject: [PATCH 11/13] Removes top-level HostConfig The HostConfig is already a sub-class of the InspectContainerResponse object. --- .../dockerjava/client/model/HostConfig.java | 56 ------------------- 1 file changed, 56 deletions(-) delete mode 100644 src/main/java/com/github/dockerjava/client/model/HostConfig.java diff --git a/src/main/java/com/github/dockerjava/client/model/HostConfig.java b/src/main/java/com/github/dockerjava/client/model/HostConfig.java deleted file mode 100644 index 4dc55e644..000000000 --- a/src/main/java/com/github/dockerjava/client/model/HostConfig.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.github.dockerjava.client.model; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.commons.lang.builder.ToStringBuilder; - - -import java.util.Arrays; - -/** - * - * @author Konstantin Pelykh (kpelykh@gmail.com) - * - */ -@JsonIgnoreProperties(ignoreUnknown = true) -public class HostConfig { - - @JsonProperty("Binds") - public String[] binds; - - @JsonProperty("LxcConf") - public LxcConf[] lxcConf; - - @JsonProperty("PortBindings") - public Ports portBindings; - - @JsonProperty("PublishAllPorts") - public boolean publishAllPorts; - - @JsonProperty("Privileged") - public boolean privileged; - - @JsonProperty("Dns") - public String dns; - - @JsonProperty("VolumesFrom") - public String volumesFrom; - - @JsonProperty("ContainerIDFile") - public String containerIDFile; - - @JsonProperty("DnsSearch") - public String dnsSearch; - - @JsonProperty("Links") - public String[] links; - - @JsonProperty("NetworkMode") - public String networkMode; - - @Override - public String toString() { - return ToStringBuilder.reflectionToString(this); - } - -} From b7bbcfe73c71db806a1163b11bed00242854513a Mon Sep 17 00:00:00 2001 From: Matt Fulgo Date: Fri, 1 Aug 2014 17:39:32 -0400 Subject: [PATCH 12/13] Renames Config to DockerClientConfig Having a slightly less generic class name is probably a good thing... --- .../dockerjava/client/DockerClient.java | 40 +++++++++---------- .../{Config.java => DockerClientConfig.java} | 10 ++--- 2 files changed, 25 insertions(+), 25 deletions(-) rename src/main/java/com/github/dockerjava/client/{Config.java => DockerClientConfig.java} (95%) diff --git a/src/main/java/com/github/dockerjava/client/DockerClient.java b/src/main/java/com/github/dockerjava/client/DockerClient.java index dd39cd760..411e04165 100644 --- a/src/main/java/com/github/dockerjava/client/DockerClient.java +++ b/src/main/java/com/github/dockerjava/client/DockerClient.java @@ -70,7 +70,7 @@ public class DockerClient implements Closeable { public DockerClient() { - this(Config.createDefaultConfigBuilder().build()); + this(DockerClientConfig.createDefaultConfigBuilder().build()); } public DockerClient(String serverUrl) { @@ -78,47 +78,47 @@ public DockerClient(String serverUrl) { } - private static Config configWithServerUrl(String serverUrl) { - return Config.createDefaultConfigBuilder() + private static DockerClientConfig configWithServerUrl(String serverUrl) { + return DockerClientConfig.createDefaultConfigBuilder() .withUri(serverUrl) .build(); } - public DockerClient(Config config) { - this(config, new DefaultCommandFactory()); + public DockerClient(DockerClientConfig dockerClientConfig) { + this(dockerClientConfig, new DefaultCommandFactory()); } - public DockerClient(Config config, CommandFactory cmdFactory) { + public DockerClient(DockerClientConfig dockerClientConfig, CommandFactory cmdFactory) { this.cmdFactory = cmdFactory; - HttpClient httpClient = getPoolingHttpClient(config); + HttpClient httpClient = getPoolingHttpClient(dockerClientConfig); ClientConfig clientConfig = new DefaultClientConfig(); client = new ApacheHttpClient4(new ApacheHttpClient4Handler(httpClient, null, false), clientConfig); - if(config.getReadTimeout() != null) { - client.setReadTimeout(config.getReadTimeout()); + if(dockerClientConfig.getReadTimeout() != null) { + client.setReadTimeout(dockerClientConfig.getReadTimeout()); } client.addFilter(new JsonClientFilter()); - if (config.isLoggingFilterEnabled()) + if (dockerClientConfig.isLoggingFilterEnabled()) client.addFilter(new SelectiveLoggingFilter()); - WebResource webResource = client.resource(config.getUri()); + WebResource webResource = client.resource(dockerClientConfig.getUri()); - if(config.getVersion() != null) { - baseResource = webResource.path("v" + config.getVersion()); + if(dockerClientConfig.getVersion() != null) { + baseResource = webResource.path("v" + dockerClientConfig.getVersion()); } else { baseResource = webResource; } } - private HttpClient getPoolingHttpClient(Config config) { + private HttpClient getPoolingHttpClient(DockerClientConfig dockerClientConfig) { SchemeRegistry schemeRegistry = new SchemeRegistry(); - schemeRegistry.register(new Scheme("http", config.getUri().getPort(), + schemeRegistry.register(new Scheme("http", dockerClientConfig.getUri().getPort(), PlainSocketFactory.getSocketFactory())); schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory .getSocketFactory())); @@ -162,11 +162,11 @@ public AuthConfig authConfig() throws DockerException { private static AuthConfig authConfigFromProperties() throws DockerException { final AuthConfig a = new AuthConfig(); - // TODO This should probably come from the Config used to create the DockerClient. - Config defaultConfig = Config.createDefaultConfigBuilder().build(); - a.setUsername(defaultConfig.getUsername()); - a.setPassword(defaultConfig.getPassword()); - a.setEmail(defaultConfig.getEmail()); + // TODO This should probably come from the DockerClientConfig used to create the DockerClient. + DockerClientConfig defaultDockerClientConfig = DockerClientConfig.createDefaultConfigBuilder().build(); + a.setUsername(defaultDockerClientConfig.getUsername()); + a.setPassword(defaultDockerClientConfig.getPassword()); + a.setEmail(defaultDockerClientConfig.getEmail()); if (a.getUsername() == null) { throw new IllegalStateException("username is null"); diff --git a/src/main/java/com/github/dockerjava/client/Config.java b/src/main/java/com/github/dockerjava/client/DockerClientConfig.java similarity index 95% rename from src/main/java/com/github/dockerjava/client/Config.java rename to src/main/java/com/github/dockerjava/client/DockerClientConfig.java index 086559178..2c9340fa5 100644 --- a/src/main/java/com/github/dockerjava/client/Config.java +++ b/src/main/java/com/github/dockerjava/client/DockerClientConfig.java @@ -8,13 +8,13 @@ import com.google.common.base.Preconditions; -public class Config { +public class DockerClientConfig { private final URI uri; private final String version, username, password, email; private final Integer readTimeout; private final boolean loggingFilterEnabled; - private Config(DockerClientConfigBuilder builder) { + private DockerClientConfig(DockerClientConfigBuilder builder) { this.uri = builder.uri; this.version = builder.version; this.username = builder.username; @@ -55,7 +55,7 @@ public boolean isLoggingFilterEnabled() { public static Properties loadIncludedDockerProperties() { try { Properties p = new Properties(); - p.load(Config.class.getResourceAsStream("/docker.io.properties")); + p.load(DockerClientConfig.class.getResourceAsStream("/docker.io.properties")); return p; } catch (IOException e) { throw new DockerException(e); @@ -170,8 +170,8 @@ public final DockerClientConfigBuilder withLoggingFilter(boolean loggingFilterEn this.loggingFilterEnabled = loggingFilterEnabled; return this; } - public Config build() { - return new Config(this); + public DockerClientConfig build() { + return new DockerClientConfig(this); } } } From a2b68c54cf8a60dc1fa6551347ba08563aa1c5bd Mon Sep 17 00:00:00 2001 From: Matt Fulgo Date: Fri, 1 Aug 2014 18:44:40 -0400 Subject: [PATCH 13/13] Removes setCredentials from DockerClient DockerClient is now an immutable class. The only way to set credentials now is at construction of the DockerClient, using the DockerClientConfig object. --- .../dockerjava/client/DockerClient.java | 90 +++---------------- .../client/command/AuthCmdTest.java | 5 +- 2 files changed, 16 insertions(+), 79 deletions(-) diff --git a/src/main/java/com/github/dockerjava/client/DockerClient.java b/src/main/java/com/github/dockerjava/client/DockerClient.java index 411e04165..f938edcef 100644 --- a/src/main/java/com/github/dockerjava/client/DockerClient.java +++ b/src/main/java/com/github/dockerjava/client/DockerClient.java @@ -1,5 +1,6 @@ package com.github.dockerjava.client; +import static com.google.common.base.Preconditions.checkNotNull; import static org.apache.commons.io.IOUtils.closeQuietly; import java.io.*; @@ -16,36 +17,6 @@ import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.PoolingClientConnectionManager; -import com.github.dockerjava.client.command.AbstrDockerCmd; -import com.github.dockerjava.client.command.AttachContainerCmd; -import com.github.dockerjava.client.command.AuthCmd; -import com.github.dockerjava.client.command.BuildImgCmd; -import com.github.dockerjava.client.command.CommitCmd; -import com.github.dockerjava.client.command.ContainerDiffCmd; -import com.github.dockerjava.client.command.CopyFileFromContainerCmd; -import com.github.dockerjava.client.command.CreateContainerCmd; -import com.github.dockerjava.client.command.CreateImageCmd; -import com.github.dockerjava.client.command.InfoCmd; -import com.github.dockerjava.client.command.InspectContainerCmd; -import com.github.dockerjava.client.command.InspectImageCmd; -import com.github.dockerjava.client.command.KillContainerCmd; -import com.github.dockerjava.client.command.ListContainersCmd; -import com.github.dockerjava.client.command.ListImagesCmd; -import com.github.dockerjava.client.command.LogContainerCmd; -import com.github.dockerjava.client.command.PingCmd; -import com.github.dockerjava.client.command.PullImageCmd; -import com.github.dockerjava.client.command.PushImageCmd; -import com.github.dockerjava.client.command.RemoveContainerCmd; -import com.github.dockerjava.client.command.RemoveImageCmd; -import com.github.dockerjava.client.command.RestartContainerCmd; -import com.github.dockerjava.client.command.SearchImagesCmd; -import com.github.dockerjava.client.command.StartContainerCmd; -import com.github.dockerjava.client.command.StopContainerCmd; -import com.github.dockerjava.client.command.TagImageCmd; -import com.github.dockerjava.client.command.TopContainerCmd; -import com.github.dockerjava.client.command.VersionCmd; -import com.github.dockerjava.client.command.WaitContainerCmd; - import com.github.dockerjava.client.model.AuthConfig; import com.github.dockerjava.client.utils.JsonClientFilter; @@ -62,12 +33,11 @@ */ public class DockerClient implements Closeable { - private Client client; + private final Client client; private final CommandFactory cmdFactory; private final WebResource baseResource; - private AuthConfig authConfig; - + private final DockerClientConfig dockerClientConfig; public DockerClient() { this(DockerClientConfig.createDefaultConfigBuilder().build()); @@ -77,20 +47,19 @@ public DockerClient(String serverUrl) { this(configWithServerUrl(serverUrl)); } - private static DockerClientConfig configWithServerUrl(String serverUrl) { return DockerClientConfig.createDefaultConfigBuilder() .withUri(serverUrl) .build(); } - public DockerClient(DockerClientConfig dockerClientConfig) { this(dockerClientConfig, new DefaultCommandFactory()); } public DockerClient(DockerClientConfig dockerClientConfig, CommandFactory cmdFactory) { this.cmdFactory = cmdFactory; + this.dockerClientConfig = dockerClientConfig; HttpClient httpClient = getPoolingHttpClient(dockerClientConfig); ClientConfig clientConfig = new DefaultClientConfig(); @@ -115,7 +84,6 @@ public DockerClient(DockerClientConfig dockerClientConfig, CommandFactory cmdFac } } - private HttpClient getPoolingHttpClient(DockerClientConfig dockerClientConfig) { SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(new Scheme("http", dockerClientConfig.getUri().getPort(), @@ -129,56 +97,25 @@ private HttpClient getPoolingHttpClient(DockerClientConfig dockerClientConfig) { // Increase default max connection per route cm.setDefaultMaxPerRoute(1000); - return new DefaultHttpClient(cm); } - - public void setCredentials(String username, String password, String email) { - if (username == null) { - throw new IllegalArgumentException("username is null"); - } - if (password == null) { - throw new IllegalArgumentException("password is null"); - } - if (email == null) { - throw new IllegalArgumentException("email is null"); - } - authConfig = new AuthConfig(); - authConfig.setUsername(username); - authConfig.setPassword(password); - authConfig.setEmail(email); - } - public RES_T execute(AbstrDockerCmd command) throws DockerException { return command.withBaseResource(baseResource).exec(); } public AuthConfig authConfig() throws DockerException { - return authConfig != null ? authConfig : authConfigFromProperties(); - } - - private static AuthConfig authConfigFromProperties() throws DockerException { - final AuthConfig a = new AuthConfig(); - - // TODO This should probably come from the DockerClientConfig used to create the DockerClient. - DockerClientConfig defaultDockerClientConfig = DockerClientConfig.createDefaultConfigBuilder().build(); - a.setUsername(defaultDockerClientConfig.getUsername()); - a.setPassword(defaultDockerClientConfig.getPassword()); - a.setEmail(defaultDockerClientConfig.getEmail()); + checkNotNull(dockerClientConfig.getUsername(), "Configured username is null."); + checkNotNull(dockerClientConfig.getPassword(), "Configured password is null."); + checkNotNull(dockerClientConfig.getEmail(), "Configured email is null."); - if (a.getUsername() == null) { - throw new IllegalStateException("username is null"); - } - if (a.getPassword() == null) { - throw new IllegalStateException("password is null"); - } - if (a.getEmail() == null) { - throw new IllegalStateException("email is null"); - } - - return a; + AuthConfig authConfig = new AuthConfig(); + authConfig.setUsername(dockerClientConfig.getUsername()); + authConfig.setPassword(dockerClientConfig.getPassword()); + authConfig.setEmail(dockerClientConfig.getEmail()); + // TODO Make the registry address configurable + return authConfig; } /** @@ -325,7 +262,6 @@ public TagImageCmd tagImageCmd(String imageId, String repository, String tag) { return cmdFactory.tagImageCmd(imageId, repository, tag).withBaseResource(baseResource); } - // TODO This is only being used by the test code for logging. Is it really necessary? /** * @return The output slurped into a string. diff --git a/src/test/java/com/github/dockerjava/client/command/AuthCmdTest.java b/src/test/java/com/github/dockerjava/client/command/AuthCmdTest.java index 4ccac6638..608d84535 100644 --- a/src/test/java/com/github/dockerjava/client/command/AuthCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/AuthCmdTest.java @@ -1,6 +1,7 @@ package com.github.dockerjava.client.command; import com.github.dockerjava.client.AbstractDockerClientTest; +import com.github.dockerjava.client.DockerClient; import com.github.dockerjava.client.DockerException; import com.sun.jersey.api.client.UniformInterfaceException; @@ -42,8 +43,8 @@ public void testAuth() throws Exception { public void testAuthInvalid() throws Exception { System.setProperty("docker.io.password", "garbage"); try { - dockerClient.authCmd().exec(); - fail(); + new DockerClient().authCmd().exec(); + fail("Expected a DockerException caused by a bad password."); } catch (DockerException e) { assertThat(e.getCause(), Matchers.instanceOf(UniformInterfaceException.class)); assertEquals(((UniformInterfaceException) e.getCause()).getResponse().getStatus(), 401);