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/DockerClient.java b/src/main/java/com/github/dockerjava/client/DockerClient.java index 2aba605a5..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.ImportImageCmd; -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,63 +33,60 @@ */ 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(Config.createDefaultConfigBuilder().build()); + this(DockerClientConfig.createDefaultConfigBuilder().build()); } public DockerClient(String serverUrl) { this(configWithServerUrl(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; + this.dockerClientConfig = dockerClientConfig; - 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()); - - if(config.getVersion() != null) { - baseResource = webResource.path("v" + config.getVersion()); + + WebResource webResource = client.resource(dockerClientConfig.getUri()); + + 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())); @@ -129,56 +97,25 @@ private HttpClient getPoolingHttpClient(Config config) { // 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 Config used to create the DockerClient. - Config defaultConfig = Config.createDefaultConfigBuilder().build(); - a.setUsername(defaultConfig.getUsername()); - a.setPassword(defaultConfig.getPassword()); - a.setEmail(defaultConfig.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; } /** @@ -195,7 +132,7 @@ public AuthCmd authCmd() { public InfoCmd infoCmd() throws DockerException { return cmdFactory.infoCmd().withBaseResource(baseResource); } - + public PingCmd pingCmd() { return cmdFactory.pingCmd().withBaseResource(baseResource); } @@ -221,9 +158,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); } @@ -326,7 +262,7 @@ 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/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); } } } 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/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/command/CopyFileFromContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/CopyFileFromContainerCmd.java index dd9742788..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; @@ -69,7 +71,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"); @@ -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 042082760..ecd8b041e 100644 --- a/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java @@ -1,20 +1,21 @@ package com.github.dockerjava.client.command; +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.ContainerCreateResponse; -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; import com.sun.jersey.core.util.MultivaluedMapImpl; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.MultivaluedMap; /** @@ -22,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); @@ -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; } @@ -106,7 +107,7 @@ public String toString() { .toString(); } - protected ContainerCreateResponse impl() { + protected CreateContainerResponse impl() { MultivaluedMap params = new MultivaluedMapImpl(); if (name != null) { params.add("name", name); @@ -117,7 +118,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())); @@ -130,4 +131,251 @@ protected ContainerCreateResponse 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/model/ContainerCreateResponse.java b/src/main/java/com/github/dockerjava/client/command/CreateContainerResponse.java similarity index 73% rename from src/main/java/com/github/dockerjava/client/model/ContainerCreateResponse.java rename to src/main/java/com/github/dockerjava/client/command/CreateContainerResponse.java index d912ecc19..3eb9226f8 100644 --- a/src/main/java/com/github/dockerjava/client/model/ContainerCreateResponse.java +++ b/src/main/java/com/github/dockerjava/client/command/CreateContainerResponse.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 org.apache.commons.lang.builder.ToStringBuilder; import java.util.Arrays; @@ -11,7 +12,7 @@ * */ @JsonIgnoreProperties(ignoreUnknown = true) -public class ContainerCreateResponse { +public class CreateContainerResponse { @JsonProperty("Id") private String id; @@ -37,9 +38,6 @@ public void setWarnings(String[] warnings) { @Override public String toString() { - return "ContainerCreateResponse{" + - "id='" + id + '\'' + - ", warnings=" + Arrays.toString(warnings) + - '}'; + return ToStringBuilder.reflectionToString(this); } } 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 80% 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 9d02d5926..1254f63e8 100644 --- a/src/main/java/com/github/dockerjava/client/command/ImportImageCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/CreateImageCmd.java @@ -9,7 +9,6 @@ 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,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; @@ -29,7 +28,7 @@ public class ImportImageCmd extends AbstrDockerCmd params = new MultivaluedMapImpl(); params.add("repo", repository); params.add("tag", tag); @@ -89,7 +88,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/model/ImageCreateResponse.java b/src/main/java/com/github/dockerjava/client/command/CreateImageResponse.java similarity index 68% rename from src/main/java/com/github/dockerjava/client/model/ImageCreateResponse.java rename to src/main/java/com/github/dockerjava/client/command/CreateImageResponse.java index d23aff500..e3f404744 100644 --- a/src/main/java/com/github/dockerjava/client/model/ImageCreateResponse.java +++ b/src/main/java/com/github/dockerjava/client/command/CreateImageResponse.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 org.apache.commons.lang.builder.ToStringBuilder; /** * Parse reponses from /images/create @@ -10,21 +11,17 @@ * */ @JsonIgnoreProperties(ignoreUnknown = true) -public class ImageCreateResponse { +public class CreateImageResponse { @JsonProperty("status") private String id; - public String getId() { return id; } - @Override public String toString() { - return "ContainerCreateResponse{" + - "id='" + id + '\'' + - '}'; + return ToStringBuilder.reflectionToString(this); } } diff --git a/src/main/java/com/github/dockerjava/client/command/DefaultCommandFactory.java b/src/main/java/com/github/dockerjava/client/command/DefaultCommandFactory.java index 79cb726bc..a8b6d2547 100644 --- a/src/main/java/com/github/dockerjava/client/command/DefaultCommandFactory.java +++ b/src/main/java/com/github/dockerjava/client/command/DefaultCommandFactory.java @@ -47,8 +47,8 @@ public CreateContainerCmd createContainerCmd(String image) { } @Override - public ImportImageCmd importImageCmd(String repository, InputStream imageStream) { - return new ImportImageCmd(repository, imageStream); + public CreateImageCmd createImageCmd(String repository, InputStream imageStream) { + return new CreateImageCmd(repository, imageStream); } @Override @@ -155,7 +155,7 @@ public VersionCmd versionCmd() { public WaitContainerCmd waitContainerCmd(String containerId) { return new WaitContainerCmd(containerId); } - + @Override public PingCmd pingCmd() { return new PingCmd(); 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..78967e2d3 100644 --- a/src/main/java/com/github/dockerjava/client/command/InspectContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/InspectContainerCmd.java @@ -7,7 +7,6 @@ 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 +14,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 +39,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/model/ContainerInspectResponse.java b/src/main/java/com/github/dockerjava/client/command/InspectContainerResponse.java similarity index 79% rename from src/main/java/com/github/dockerjava/client/model/ContainerInspectResponse.java rename to src/main/java/com/github/dockerjava/client/command/InspectContainerResponse.java index 7072037cf..352cc7cc3 100644 --- a/src/main/java/com/github/dockerjava/client/model/ContainerInspectResponse.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,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; 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; /** * @@ -14,7 +16,7 @@ * */ @JsonIgnoreProperties(ignoreUnknown = true) -public class ContainerInspectResponse { +public class InspectContainerResponse { @JsonProperty("Args") private String[] args; @@ -30,16 +32,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 +50,7 @@ public class ContainerInspectResponse { @JsonProperty("MountLabel") private String mountLabel; - + @JsonProperty("Name") private String name; @@ -60,7 +62,7 @@ public class ContainerInspectResponse { @JsonProperty("ProcessLabel") private String processLabel; - + @JsonProperty("ResolvConfPath") private String resolvConfPath; @@ -84,7 +86,7 @@ public String getCreated() { public String getPath() { return path; } - + public String getProcessLabel() { return processLabel; } @@ -142,11 +144,11 @@ public String getDriver() { public HostConfig getHostConfig() { return hostConfig; } - + public String getExecDriver() { return execDriver; } - + public String getMountLabel() { return mountLabel; } @@ -160,7 +162,7 @@ public class NetworkSettings { @JsonProperty("Bridge") private String bridge; @JsonProperty("PortMapping") private Map> portMapping; @JsonProperty("Ports") private Ports ports; - + public String getIpAddress() { return ipAddress; } @@ -186,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); } } @@ -208,7 +203,7 @@ public class ContainerState { @JsonProperty("ExitCode") private int exitCode; @JsonProperty("StartedAt") private String startedAt; @JsonProperty("FinishedAt") private String finishedAt; - + public boolean isRunning() { return running; } @@ -233,56 +228,49 @@ 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); } } - + @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; } @@ -327,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/InspectImageCmd.java b/src/main/java/com/github/dockerjava/client/command/InspectImageCmd.java index 85df63b80..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.ImageInspectResponse; import com.google.common.base.Preconditions; import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.api.client.WebResource; @@ -16,7 +15,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 +40,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/model/ImageInspectResponse.java b/src/main/java/com/github/dockerjava/client/command/InspectImageResponse.java similarity index 69% rename from src/main/java/com/github/dockerjava/client/model/ImageInspectResponse.java rename to src/main/java/com/github/dockerjava/client/command/InspectImageResponse.java index 64b872f37..9cc164fb0 100644 --- a/src/main/java/com/github/dockerjava/client/model/ImageInspectResponse.java +++ b/src/main/java/com/github/dockerjava/client/command/InspectImageResponse.java @@ -1,7 +1,9 @@ -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; +import org.apache.commons.lang.builder.ToStringBuilder; /** * @@ -9,35 +11,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 +47,7 @@ public class ImageInspectResponse { private String parent; @JsonProperty("Size") - private long size; + private long size; public String getId() { return id; @@ -95,21 +97,8 @@ public String getOs() { return os; } - @Override + @Override public String toString() { - return "ImageInspectResponse{" + - "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); } } 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/command/TopContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java index 8794a2d75..fde5f54eb 100644 --- a/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java +++ b/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java @@ -8,7 +8,6 @@ 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 +17,7 @@ * @author marcus * */ -public class TopContainerCmd extends AbstrDockerCmd { +public class TopContainerCmd extends AbstrDockerCmd { private static final Logger LOGGER = LoggerFactory.getLogger(TopContainerCmd.class); @@ -59,7 +58,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 +66,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/ContainerTopResponse.java b/src/main/java/com/github/dockerjava/client/command/TopContainerResponse.java similarity index 85% rename from src/main/java/com/github/dockerjava/client/model/ContainerTopResponse.java rename to src/main/java/com/github/dockerjava/client/command/TopContainerResponse.java index 080bccc25..70701ff1f 100644 --- a/src/main/java/com/github/dockerjava/client/model/ContainerTopResponse.java +++ b/src/main/java/com/github/dockerjava/client/command/TopContainerResponse.java @@ -1,43 +1,43 @@ -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.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/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/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; - } - - - -} 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 deleted file mode 100755 index 423cc3363..000000000 --- a/src/main/java/com/github/dockerjava/client/model/CopyConfig.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.github.dockerjava.client.model; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * 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 "{\"HostPath\":\"" + hostPath + "\", \"Resource\":\"" + resource + "\"}"; - } - -} 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 2ba9c9eb2..000000000 --- a/src/main/java/com/github/dockerjava/client/model/CreateContainerConfig.java +++ /dev/null @@ -1,275 +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; - -/** - * - * @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 "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 + '\'' + - '}'; - } - - -} 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 deleted file mode 100644 index be78c1bd8..000000000 --- a/src/main/java/com/github/dockerjava/client/model/HostConfig.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.github.dockerjava.client.model; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; - - -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 "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 + '\'' + - '}'; - } - -} 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 deleted file mode 100644 index ae8088f92..000000000 --- a/src/main/java/com/github/dockerjava/client/model/StartContainerConfig.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.github.dockerjava.client.model; - -import java.util.Arrays; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * - * @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 "StartContainerConfig{" + - "binds=" + binds + - ", lxcConf=" + Arrays.toString(lxcConf) + - ", portBindings=" + portBindings + - ", privileged=" + privileged + - ", publishAllPorts=" + publishAllPorts + - ", dns='" + dns + '\'' + - '}'; - } -} - 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); } } diff --git a/src/test/java/com/github/dockerjava/client/DockerClientTest.java b/src/test/java/com/github/dockerjava/client/DockerClientTest.java index 79f651c34..9abac0b47 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.command.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/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); 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..17934c062 100644 --- a/src/test/java/com/github/dockerjava/client/command/BuildImageCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/BuildImageCmdTest.java @@ -12,8 +12,6 @@ import java.io.IOException; import java.io.StringWriter; import java.lang.reflect.Method; -import java.net.URI; -import java.net.URISyntaxException; import org.apache.commons.io.IOUtils; import org.apache.commons.io.LineIterator; @@ -27,9 +25,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.ContainerInspectResponse; -import com.github.dockerjava.client.model.ImageInspectResponse; import com.sun.jersey.api.client.ClientResponse; public class BuildImageCmdTest extends AbstractDockerClientTest { @@ -82,13 +77,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 +110,7 @@ public void testDockerBuilderAddFolder() throws DockerException, dockerfileBuild(baseDir, "Successfully executed testAddFolder.sh"); } - + private String dockerfileBuild(File baseDir, String expectedText) throws DockerException, IOException { @@ -143,7 +138,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 +157,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 +191,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 +220,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 +228,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..85bc6227f 100644 --- a/src/test/java/com/github/dockerjava/client/command/CommitCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/CommitCmdTest.java @@ -18,8 +18,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 +25,7 @@ public class CommitCmdTest extends AbstractDockerClientTest { public void beforeTest() throws DockerException { super.beforeTest(); } - + @AfterTest public void afterTest() { super.afterTest(); @@ -42,11 +40,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 +57,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..078d63823 100644 --- a/src/test/java/com/github/dockerjava/client/command/ContainerDiffCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/ContainerDiffCmdTest.java @@ -20,7 +20,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 +45,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/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."); + } +} 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..56fc5ca91 100644 --- a/src/test/java/com/github/dockerjava/client/command/CreateContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/CreateContainerCmdTest.java @@ -16,8 +16,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.ContainerInspectResponse; import com.github.dockerjava.client.model.Volume; public class CreateContainerCmdTest extends AbstractDockerClientTest { @@ -26,7 +24,7 @@ public class CreateContainerCmdTest extends AbstractDockerClientTest { public void beforeTest() throws DockerException { super.beforeTest(); } - + @AfterTest public void afterTest() { super.afterTest(); @@ -41,69 +39,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/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")); 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..b1ff30276 100644 --- a/src/test/java/com/github/dockerjava/client/command/KillContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/KillContainerCmdTest.java @@ -19,8 +19,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.ContainerInspectResponse; public class KillContainerCmdTest extends AbstractDockerClientTest { @@ -50,7 +48,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 +58,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..7c4332fcd 100644 --- a/src/test/java/com/github/dockerjava/client/command/ListContainersCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/ListContainersCmdTest.java @@ -25,8 +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.ContainerCreateResponse; -import com.github.dockerjava.client.model.ContainerInspectResponse; public class ListContainersCmdTest extends AbstractDockerClientTest { @@ -34,7 +32,7 @@ public class ListContainersCmdTest extends AbstractDockerClientTest { public void beforeTest() throws DockerException { super.beforeTest(); } - + @AfterTest public void afterTest() { super.afterTest(); @@ -49,42 +47,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 +94,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..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.ContainerCreateResponse; import com.sun.jersey.api.client.ClientResponse; public class LogContainerCmdTest extends AbstractDockerClientTest { @@ -48,9 +47,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..0472720d9 100644 --- a/src/test/java/com/github/dockerjava/client/command/PullImageCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/PullImageCmdTest.java @@ -17,7 +17,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 +46,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 +62,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 +80,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..d5e175e16 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,9 @@ import com.github.dockerjava.client.AbstractDockerClientTest; import com.github.dockerjava.client.DockerException; -import com.github.dockerjava.client.model.ContainerCreateResponse; public class PushImageCmdTest extends AbstractDockerClientTest { - + public static final Logger LOG = LoggerFactory .getLogger(PushImageCmdTest.class); @@ -52,7 +51,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 +59,17 @@ 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(); - + + // TODO This can fail intermittently if run with other tests. 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..4b614a489 100644 --- a/src/test/java/com/github/dockerjava/client/command/RemoveContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/RemoveContainerCmdTest.java @@ -21,7 +21,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 +49,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..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.ContainerCreateResponse; public class RemoveImageCmdTest extends AbstractDockerClientTest { @@ -51,7 +50,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..c25784b90 100644 --- a/src/test/java/com/github/dockerjava/client/command/RestartContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/RestartContainerCmdTest.java @@ -17,8 +17,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.ContainerInspectResponse; public class RestartContainerCmdTest extends AbstractDockerClientTest { @@ -45,31 +43,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..4ea95fec5 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,6 @@ 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; - public class StartContainerCmdTest extends AbstractDockerClientTest { @@ -58,10 +51,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 +62,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 +100,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 +109,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..aeb8ed0d0 100644 --- a/src/test/java/com/github/dockerjava/client/command/StopContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/StopContainerCmdTest.java @@ -19,8 +19,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.ContainerInspectResponse; public class StopContainerCmdTest extends AbstractDockerClientTest { @@ -50,7 +48,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 +58,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..fff083213 100644 --- a/src/test/java/com/github/dockerjava/client/command/WaitContainerCmdTest.java +++ b/src/test/java/com/github/dockerjava/client/command/WaitContainerCmdTest.java @@ -17,8 +17,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.ContainerInspectResponse; public class WaitContainerCmdTest extends AbstractDockerClientTest { @@ -45,9 +43,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 +57,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))); }