diff --git a/docker/pom.xml b/docker/pom.xml
index d179a4155..ae9c675c8 100644
--- a/docker/pom.xml
+++ b/docker/pom.xml
@@ -63,7 +63,12 @@
commons-compress
1.5
-
+
+ com.google.auto.value
+ auto-value
+ 1.0-rc2
+ provided
+
org.apache.jclouds.driver
jclouds-sshj
diff --git a/docker/src/main/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadata.java b/docker/src/main/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadata.java
index 3ec7f5cb8..7b070fbfb 100644
--- a/docker/src/main/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadata.java
+++ b/docker/src/main/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadata.java
@@ -76,26 +76,25 @@ public ContainerToNodeMetadata(ProviderMetadata providerMetadata, Function getPrivateIpAddresses(Container container) {
- if (container.getNetworkSettings() == null) return ImmutableList.of();
- return ImmutableList.of(container.getNetworkSettings().getIpAddress());
+ if (container.networkSettings() == null) return ImmutableList.of();
+ return ImmutableList.of(container.networkSettings().ipAddress());
}
private List getPublicIpAddresses() {
@@ -120,16 +119,16 @@ private List getPublicIpAddresses() {
}
protected static int getLoginPort(Container container) {
- if (container.getNetworkSettings() != null) {
- Map>> ports = container.getNetworkSettings().getPorts();
+ if (container.networkSettings() != null) {
+ Map>> ports = container.networkSettings().ports();
if (ports != null && ports.containsKey("22/tcp")) {
return Integer.parseInt(getOnlyElement(ports.get("22/tcp")).get("HostPort"));
}
// this is needed in case the container list is coming from listContainers
- } else if (container.getPorts() != null) {
- for (Port port : container.getPorts()) {
- if (port.getPrivatePort() == 22) {
- return port.getPublicPort();
+ } else if (container.ports() != null) {
+ for (Port port : container.ports()) {
+ if (port.privatePort() == 22) {
+ return port.publicPort();
}
}
}
diff --git a/docker/src/main/java/org/jclouds/docker/compute/functions/ImageToImage.java b/docker/src/main/java/org/jclouds/docker/compute/functions/ImageToImage.java
index 4e3358df4..551c44104 100644
--- a/docker/src/main/java/org/jclouds/docker/compute/functions/ImageToImage.java
+++ b/docker/src/main/java/org/jclouds/docker/compute/functions/ImageToImage.java
@@ -44,7 +44,7 @@ public class ImageToImage implements Function {
@Override
public Status apply(final State state) {
if (state == null) return Status.UNRECOGNIZED;
- return state.isRunning() ? Status.RUNNING : Status.TERMINATED;
+ return state.running() ? Status.RUNNING : Status.TERMINATED;
}
}
diff --git a/docker/src/main/java/org/jclouds/docker/compute/strategy/DockerComputeServiceAdapter.java b/docker/src/main/java/org/jclouds/docker/compute/strategy/DockerComputeServiceAdapter.java
index d1c1260dd..fa83ffc8f 100644
--- a/docker/src/main/java/org/jclouds/docker/compute/strategy/DockerComputeServiceAdapter.java
+++ b/docker/src/main/java/org/jclouds/docker/compute/strategy/DockerComputeServiceAdapter.java
@@ -89,7 +89,7 @@ public NodeAndInitialCredentials createNodeWithGroupEncodedIntoName(S
}
Config.Builder containerConfigBuilder = Config.builder()
- .imageId(imageId)
+ .image(imageId)
.exposedPorts(exposedPorts);
if (templateOptions.getCommands().isPresent()) {
@@ -123,7 +123,7 @@ public NodeAndInitialCredentials createNodeWithGroupEncodedIntoName(S
logger.debug(">> creating new container with containerConfig(%s)", containerConfig);
Container container = api.getRemoteApi().createContainer(name, containerConfig);
- logger.trace("<< container(%s)", container.getId());
+ logger.trace("<< container(%s)", container.id());
HostConfig.Builder hostConfigBuilder = HostConfig.builder()
.publishAllPorts(true)
@@ -140,13 +140,13 @@ public NodeAndInitialCredentials createNodeWithGroupEncodedIntoName(S
}
HostConfig hostConfig = hostConfigBuilder.build();
- api.getRemoteApi().startContainer(container.getId(), hostConfig);
- container = api.getRemoteApi().inspectContainer(container.getId());
- if (container.getState().getExitCode() != 0) {
- destroyNode(container.getId());
- throw new IllegalStateException(String.format("Container %s has not started correctly", container.getId()));
+ api.getRemoteApi().startContainer(container.id(), hostConfig);
+ container = api.getRemoteApi().inspectContainer(container.id());
+ if (container.state().exitCode() != 0) {
+ destroyNode(container.id());
+ throw new IllegalStateException(String.format("Container %s has not started correctly", container.id()));
}
- return new NodeAndInitialCredentials(container, container.getId(),
+ return new NodeAndInitialCredentials(container, container.id(),
LoginCredentials.builder().user(loginUser).password(loginUserPassword).build());
}
@@ -166,9 +166,11 @@ public Set listImages() {
Set images = Sets.newHashSet();
for (Image image : api.getRemoteApi().listImages()) {
// less efficient than just listImages but returns richer json that needs repoTags coming from listImages
- Image inspected = api.getRemoteApi().inspectImage(image.getId());
- if (inspected.getRepoTags().isEmpty()) {
- inspected = Image.builder().fromImage(inspected).repoTags(image.getRepoTags()).build();
+ Image inspected = api.getRemoteApi().inspectImage(image.id());
+ if (inspected.repoTags().isEmpty()) {
+ inspected = Image.create(inspected.id(), inspected.parent(), inspected.created(), inspected.container(),
+ inspected.dockerVersion(), inspected.architecture(), inspected.os(), inspected.size(),
+ inspected.virtualSize(), image.repoTags());
}
images.add(inspected);
}
@@ -182,7 +184,7 @@ public Image getImage(final String imageId) {
@Override
public boolean apply(Image input) {
- return input.getId().equals(imageId);
+ return input.id().equals(imageId);
}
}, null);
}
@@ -192,7 +194,7 @@ public Iterable listNodes() {
Set containers = Sets.newHashSet();
for (Container container : api.getRemoteApi().listContainers(ListContainerOptions.Builder.all(true))) {
// less efficient than just listNodes but returns richer json
- containers.add(api.getRemoteApi().inspectContainer(container.getId()));
+ containers.add(api.getRemoteApi().inspectContainer(container.id()));
}
return containers;
}
diff --git a/docker/src/main/java/org/jclouds/docker/config/DockerParserModule.java b/docker/src/main/java/org/jclouds/docker/config/DockerParserModule.java
index 533184f82..ea777a419 100644
--- a/docker/src/main/java/org/jclouds/docker/config/DockerParserModule.java
+++ b/docker/src/main/java/org/jclouds/docker/config/DockerParserModule.java
@@ -16,47 +16,35 @@
*/
package org.jclouds.docker.config;
-import com.google.common.collect.ImmutableMap;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParseException;
-import com.google.inject.AbstractModule;
-import com.google.inject.Provides;
-import org.jclouds.docker.domain.Container;
+import java.lang.reflect.Field;
+
import org.jclouds.json.config.GsonModule;
-import javax.inject.Singleton;
-import java.lang.reflect.Type;
-import java.util.Map;
+import com.google.gson.FieldNamingPolicy;
+import com.google.gson.FieldNamingStrategy;
+import com.google.inject.AbstractModule;
public class DockerParserModule extends AbstractModule {
-
- @Override
- protected void configure() {
+ @Override protected void configure() {
+ bind(FieldNamingStrategy.class).toInstance(FIELD_NAMING_STRATEGY);
bind(GsonModule.DateAdapter.class).to(GsonModule.Iso8601DateAdapter.class);
}
- @Provides
- @Singleton
- public Map provideCustomAdapterBindings() {
- return new ImmutableMap.Builder()
- .put(Container.class, new ContainerTypeAdapter())
- .build();
- }
-
- protected static class ContainerTypeAdapter implements JsonDeserializer {
-
- @Override
- public Container deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws
- JsonParseException {
- Gson gson = new GsonBuilder().serializeNulls().create();
- final JsonObject jsonObject = json.getAsJsonObject();
- return gson.fromJson(jsonObject, Container.class);
+ /** When serializing, Most fields are UpperCamelCase, with some exceptions. */
+ private static final FieldNamingStrategy FIELD_NAMING_STRATEGY = new FieldNamingStrategy() {
+ private final FieldNamingStrategy delegate = FieldNamingPolicy.UPPER_CAMEL_CASE;
+
+ @Override public String translateName(Field f) {
+ String result = delegate.translateName(f);
+ // IP not Ip as code wins over docs https://github.com/docker/docker/blob/master/daemon/network_settings.go
+ if (result.equals("IpAddress")) {
+ return "IPAddress";
+ } else if (result.equals("IpPrefixLen")) {
+ return "IPPrefixLen";
+ } else if (result.equals("Ip")) {
+ return "IP";
+ }
+ return result;
}
- }
-
+ };
}
diff --git a/docker/src/main/java/org/jclouds/docker/domain/Config.java b/docker/src/main/java/org/jclouds/docker/domain/Config.java
index f5190fa60..396ab2f3f 100644
--- a/docker/src/main/java/org/jclouds/docker/domain/Config.java
+++ b/docker/src/main/java/org/jclouds/docker/domain/Config.java
@@ -17,260 +17,78 @@
package org.jclouds.docker.domain;
import static com.google.common.base.Preconditions.checkNotNull;
+import static org.jclouds.docker.internal.NullSafeCopies.copyOf;
-import java.beans.ConstructorProperties;
import java.util.List;
import java.util.Map;
import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
-import com.google.common.base.Objects;
+import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.gson.annotations.SerializedName;
-
-public class Config {
-
- @SerializedName("Hostname")
- private final String hostname;
- @SerializedName("Domainname")
- private final String domainName;
- @SerializedName("User")
- private final String user;
- @SerializedName("Memory")
- private final int memory;
- @SerializedName("MemorySwap")
- private final int memorySwap;
- @SerializedName("CpuShares")
- private final int cpuShares;
- @SerializedName("AttachStdin")
- private final boolean attachStdin;
- @SerializedName("AttachStdout")
- private final boolean attachStdout;
- @SerializedName("AttachStderr")
- private final boolean attachStderr;
- @SerializedName("ExposedPorts")
- private final Map exposedPorts;
- @SerializedName("Tty")
- private final boolean tty;
- @SerializedName("OpenStdin")
- private final boolean openStdin;
- @SerializedName("StdinOnce")
- private final boolean stdinOnce;
- @SerializedName("Env")
- private final List env;
- @SerializedName("Cmd")
- private final List cmd;
- @SerializedName("Dns")
- private final List dns;
- @SerializedName("Image")
- private final String imageId;
- @SerializedName("Volumes")
- private final Map volumes;
- @SerializedName("VolumesFrom")
- private final String volumesFrom;
- @SerializedName("WorkingDir")
- private final String workingDir;
- @SerializedName("Entrypoint")
- private final List entrypoint;
- @SerializedName("NetworkDisabled")
- private final boolean networkDisabled;
- @SerializedName("OnBuild")
- private final List onBuild;
-
-
- @ConstructorProperties({ "Hostname", "Domainname", "User", "Memory", "MemorySwap", "CpuShares", "AttachStdin",
- "AttachStdout", "AttachStderr", "ExposedPorts", "Tty", "OpenStdin", "StdinOnce", "Env", "Cmd",
- "Dns", "Image", "Volumes", "VolumesFrom", "WorkingDir", "Entrypoint", "NetworkDisabled", "OnBuild" })
- protected Config(@Nullable String hostname, @Nullable String domainName, @Nullable String user,
- int memory, int memorySwap, int cpuShares, boolean attachStdin, boolean attachStdout,
- boolean attachStderr, Map exposedPorts, boolean tty, boolean openStdin,
- boolean stdinOnce, @Nullable List env, @Nullable List cmd,
- @Nullable List dns, String imageId, @Nullable Map volumes,
- @Nullable String volumesFrom, @Nullable String workingDir, @Nullable List entrypoint,
- @Nullable boolean networkDisabled, @Nullable List onBuild) {
- this.hostname = hostname;
- this.domainName = domainName;
- this.user = user;
- this.memory = checkNotNull(memory, "memory");
- this.memorySwap = checkNotNull(memorySwap, "memorySwap");
- this.cpuShares = checkNotNull(cpuShares, "cpuShares");
- this.attachStdin = checkNotNull(attachStdin, "attachStdin");
- this.attachStdout = checkNotNull(attachStdout, "attachStdout");
- this.attachStderr = checkNotNull(attachStderr, "attachStderr");
- this.exposedPorts = exposedPorts != null ? ImmutableMap.copyOf(exposedPorts) : ImmutableMap. of();
- this.tty = checkNotNull(tty, "tty");
- this.openStdin = checkNotNull(openStdin, "openStdin");
- this.stdinOnce = checkNotNull(stdinOnce, "stdinOnce");
- this.env = env != null ? ImmutableList.copyOf(env) : ImmutableList. of();
- this.cmd = cmd != null ? ImmutableList.copyOf(cmd) : ImmutableList. of();
- this.dns = dns != null ? ImmutableList.copyOf(dns) : ImmutableList. of();
- this.imageId = checkNotNull(imageId, "imageId");
- this.volumes = volumes != null ? ImmutableMap.copyOf(volumes) : ImmutableMap. of();
- this.volumesFrom = volumesFrom;
- this.workingDir = workingDir;
- this.entrypoint = entrypoint;
- this.networkDisabled = networkDisabled;
- this.onBuild = onBuild != null ? ImmutableList.copyOf(onBuild) : ImmutableList. of();
- }
-
- public String getHostname() {
- return hostname;
- }
- public String getDomainName() {
- return domainName;
- }
+@AutoValue
+public abstract class Config {
+ @Nullable public abstract String hostname();
- public String getUser() {
- return user;
- }
-
- public int getMemory() {
- return memory;
- }
+ @Nullable public abstract String domainname();
- public int getMemorySwap() {
- return memorySwap;
- }
+ @Nullable public abstract String user();
- public int getCpuShares() {
- return cpuShares;
- }
+ public abstract int memory();
- public boolean isAttachStdin() {
- return attachStdin;
- }
+ public abstract int memorySwap();
- public boolean isAttachStdout() {
- return attachStdout;
- }
+ public abstract int cpuShares();
- public boolean isAttachStderr() {
- return attachStderr;
- }
+ public abstract boolean attachStdin();
- public Map getExposedPorts() {
- return exposedPorts;
- }
+ public abstract boolean attachStdout();
- public boolean isTty() {
- return tty;
- }
+ public abstract boolean attachStderr();
- public boolean isOpenStdin() {
- return openStdin;
- }
+ public abstract Map exposedPorts();
- public boolean isStdinOnce() {
- return stdinOnce;
- }
+ public abstract boolean tty();
- public List getEnv() {
- return env;
- }
+ public abstract boolean openStdin();
- public List getCmd() {
- return cmd;
- }
+ public abstract boolean stdinOnce();
- public List getDns() {
- return dns;
- }
+ public abstract List env();
- public String getImageId() {
- return imageId;
- }
+ public abstract List cmd();
- public Map getVolumes() {
- return volumes;
- }
+ public abstract List dns();
- public String getVolumesFrom() {
- return volumesFrom;
- }
+ public abstract String image();
- public String getWorkingDir() {
- return workingDir;
- }
+ public abstract Map volumes();
- public List getEntrypoint() {
- return entrypoint;
- }
+ @Nullable public abstract String volumesFrom();
- public boolean isNetworkDisabled() {
- return networkDisabled;
- }
+ @Nullable public abstract String workingDir();
- public List getOnBuild() {
- return onBuild;
- }
+ public abstract List entrypoint();
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- Config that = (Config) o;
-
- return Objects.equal(this.hostname, that.hostname) &&
- Objects.equal(this.domainName, that.domainName) &&
- Objects.equal(this.user, that.user) &&
- Objects.equal(this.memory, that.memory) &&
- Objects.equal(this.memorySwap, that.memorySwap) &&
- Objects.equal(this.cpuShares, that.cpuShares) &&
- Objects.equal(this.attachStdin, that.attachStdin) &&
- Objects.equal(this.attachStdout, that.attachStdout) &&
- Objects.equal(this.attachStderr, that.attachStderr) &&
- Objects.equal(this.exposedPorts, that.exposedPorts) &&
- Objects.equal(this.tty, that.tty) &&
- Objects.equal(this.openStdin, that.openStdin) &&
- Objects.equal(this.stdinOnce, that.stdinOnce) &&
- Objects.equal(this.env, that.env) &&
- Objects.equal(this.cmd, that.cmd) &&
- Objects.equal(this.dns, that.dns) &&
- Objects.equal(this.imageId, that.imageId) &&
- Objects.equal(this.volumes, that.volumes) &&
- Objects.equal(this.volumesFrom, that.volumesFrom) &&
- Objects.equal(this.workingDir, that.workingDir) &&
- Objects.equal(this.entrypoint, that.entrypoint) &&
- Objects.equal(this.onBuild, that.onBuild);
- }
+ public abstract boolean networkDisabled();
- @Override
- public int hashCode() {
- return Objects.hashCode(hostname, domainName, user, memory, memorySwap, cpuShares, attachStdin, attachStdout,
- attachStderr, exposedPorts, tty, openStdin, stdinOnce, env, cmd, dns, imageId, volumes,
- volumesFrom, workingDir, entrypoint, networkDisabled, onBuild);
- }
+ public abstract List onBuild();
- @Override
- public String toString() {
- return Objects.toStringHelper(this)
- .add("hostname", hostname)
- .add("domainName", domainName)
- .add("user", user)
- .add("memory", memory)
- .add("memorySwap", memorySwap)
- .add("cpuShares", cpuShares)
- .add("attachStdin", attachStdin)
- .add("attachStdout", attachStdout)
- .add("attachStderr", attachStderr)
- .add("exposedPorts", exposedPorts)
- .add("tty", tty)
- .add("openStdin", openStdin)
- .add("stdinOnce", stdinOnce)
- .add("env", env)
- .add("cmd", cmd)
- .add("dns", dns)
- .add("imageId", imageId)
- .add("volumes", volumes)
- .add("volumesFrom", volumesFrom)
- .add("workingDir", workingDir)
- .add("entrypoint", entrypoint)
- .add("networkDisabled", networkDisabled)
- .add("onBuild", onBuild)
- .toString();
+ @SerializedNames(
+ { "Hostname", "Domainname", "User", "Memory", "MemorySwap", "CpuShares", "AttachStdin", "AttachStdout",
+ "AttachStderr", "ExposedPorts", "Tty", "OpenStdin", "StdinOnce", "Env", "Cmd", "Dns", "Image", "Volumes",
+ "VolumesFrom", "WorkingDir", "Entrypoint", "NetworkDisabled", "OnBuild" })
+ public static Config create(String hostname, String domainname, String user, int memory, int memorySwap,
+ int cpuShares, boolean attachStdin, boolean attachStdout, boolean attachStderr, Map exposedPorts,
+ boolean tty, boolean openStdin, boolean stdinOnce, List env, List cmd, List dns,
+ String image, Map volumes, String volumesFrom, String workingDir, List entrypoint,
+ boolean networkDisabled, List onBuild) {
+ return new AutoValue_Config(hostname, domainname, user, memory, memorySwap, cpuShares, attachStdin, attachStdout,
+ attachStderr, copyOf(exposedPorts), tty, openStdin, stdinOnce, copyOf(env), copyOf(cmd), copyOf(dns), image,
+ copyOf(volumes), volumesFrom, workingDir, copyOf(entrypoint), networkDisabled, copyOf(onBuild));
}
public static Builder builder() {
@@ -283,7 +101,7 @@ public Builder toBuilder() {
public static final class Builder {
private String hostname;
- private String domainName;
+ private String domainname;
private String user;
private int memory;
private int memorySwap;
@@ -298,7 +116,7 @@ public static final class Builder {
private boolean stdinOnce;
private List cmd = ImmutableList.of();
private List dns = ImmutableList.of();
- private String imageId;
+ private String image;
private Map volumes = ImmutableMap.of();
private String volumesFrom;
private String workingDir;
@@ -311,8 +129,8 @@ public Builder hostname(String hostname) {
return this;
}
- public Builder domainName(String domainName) {
- this.domainName = domainName;
+ public Builder domainname(String domainname) {
+ this.domainname = domainname;
return this;
}
@@ -386,8 +204,8 @@ public Builder dns(List dns) {
return this;
}
- public Builder imageId(String imageId) {
- this.imageId = imageId;
+ public Builder image(String image) {
+ this.image = image;
return this;
}
@@ -422,36 +240,19 @@ public Builder onBuild(List onBuild) {
}
public Config build() {
- return new Config(hostname, domainName, user, memory, memorySwap, cpuShares, attachStdin, attachStdout,
- attachStderr, exposedPorts, tty, openStdin, stdinOnce, env, cmd, dns, imageId, volumes,
- volumesFrom, workingDir, entrypoint, networkDisabled, onBuild);
+ return Config.create(hostname, domainname, user, memory, memorySwap, cpuShares, attachStdin, attachStdout,
+ attachStderr, exposedPorts, tty, openStdin, stdinOnce, env, cmd, dns, image, volumes, volumesFrom,
+ workingDir, entrypoint, networkDisabled, onBuild);
}
public Builder fromConfig(Config in) {
- return this
- .hostname(in.getHostname())
- .domainName(in.getDomainName())
- .user(in.getUser())
- .memory(in.getMemory())
- .memorySwap(in.getMemorySwap())
- .cpuShares(in.getCpuShares())
- .attachStdin(in.isAttachStdin())
- .attachStdout(in.isAttachStdout())
- .attachStderr(in.isAttachStderr())
- .exposedPorts(in.getExposedPorts())
- .tty(in.isTty())
- .openStdin(in.isOpenStdin())
- .stdinOnce(in.isStdinOnce())
- .env(in.getEnv())
- .cmd(in.getCmd())
- .dns(in.getDns())
- .imageId(in.getImageId())
- .volumes(in.getVolumes())
- .volumesFrom(in.getVolumesFrom())
- .workingDir(in.getWorkingDir())
- .entrypoint(in.getEntrypoint())
- .networkDisabled(in.isNetworkDisabled())
- .onBuild(in.getOnBuild());
+ return hostname(in.hostname()).domainname(in.domainname()).user(in.user()).memory(in.memory())
+ .memorySwap(in.memorySwap()).cpuShares(in.cpuShares()).attachStdin(in.attachStdin())
+ .attachStdout(in.attachStdout()).attachStderr(in.attachStderr()).exposedPorts(in.exposedPorts())
+ .tty(in.tty()).openStdin(in.openStdin()).stdinOnce(in.stdinOnce()).env(in.env()).cmd(in.cmd())
+ .dns(in.dns()).image(in.image()).volumes(in.volumes()).volumesFrom(in.volumesFrom())
+ .workingDir(in.workingDir()).entrypoint(in.entrypoint()).networkDisabled(in.networkDisabled())
+ .onBuild(in.onBuild());
}
}
diff --git a/docker/src/main/java/org/jclouds/docker/domain/Container.java b/docker/src/main/java/org/jclouds/docker/domain/Container.java
index efaf5b515..b06c3a56f 100644
--- a/docker/src/main/java/org/jclouds/docker/domain/Container.java
+++ b/docker/src/main/java/org/jclouds/docker/domain/Container.java
@@ -16,222 +16,69 @@
*/
package org.jclouds.docker.domain;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.gson.annotations.SerializedName;
-import org.jclouds.javax.annotation.Nullable;
+import static org.jclouds.docker.internal.NullSafeCopies.copyOf;
-import java.beans.ConstructorProperties;
-import java.util.Arrays;
import java.util.List;
import java.util.Map;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-public class Container {
-
- @SerializedName("Id")
- private final String id;
- @SerializedName("Name")
- private final String name;
- @SerializedName("Created")
- private final String created;
- @SerializedName("Path")
- private final String path;
- @SerializedName("Args")
- private final String[] args;
- @SerializedName("Config")
- private final Config containerConfig;
- @SerializedName("State")
- private final State state;
- @SerializedName("Image")
- private final String image;
- @SerializedName("NetworkSettings")
- private final NetworkSettings networkSettings;
- @SerializedName("ResolvConfPath")
- private final String resolvConfPath;
- @SerializedName("Driver")
- private final String driver;
- @SerializedName("ExecDriver")
- private final String execDriver;
- @SerializedName("Volumes")
- private final Map volumes;
- @SerializedName("VolumesRW")
- private final Map volumesRW;
- @SerializedName("Command")
- private final String command;
- @SerializedName("Status")
- private final String status;
- @SerializedName("HostConfig")
- private final HostConfig hostConfig;
- @SerializedName("Ports")
- private final List ports;
- @SerializedName("HostnamePath")
- private final String hostnamePath;
-
- @ConstructorProperties({ "Id", "Name", "Created", "Path", "Args", "Config", "State", "Image", "NetworkSettings",
- "ResolvConfPath", "Driver", "ExecDriver", "Volumes", "VolumesRW", "Command", "Status", "HostConfig",
- "Ports", "HostnamePath" })
- protected Container(String id, @Nullable String name, @Nullable String created, @Nullable String path, @Nullable String[] args,
- @Nullable Config containerConfig, @Nullable State state, @Nullable String image, @Nullable NetworkSettings networkSettings,
- @Nullable String resolvConfPath, @Nullable String driver, @Nullable String execDriver, @Nullable Map volumes,
- @Nullable Map volumesRW, @Nullable String command, @Nullable String status,
- @Nullable HostConfig hostConfig, @Nullable List ports, @Nullable String hostnamePath) {
- this.id = checkNotNull(id, "id");
- this.name = name;
- this.created = created;
- this.path = path;
- this.args = args;
- this.containerConfig = containerConfig;
- this.state = state;
- this.image = image;
- this.networkSettings = networkSettings;
- this.resolvConfPath = resolvConfPath;
- this.driver = driver;
- this.execDriver = execDriver;
- this.volumes = volumes != null ? ImmutableMap.copyOf(volumes) : ImmutableMap.of();
- this.volumesRW = volumesRW != null ? ImmutableMap.copyOf(volumesRW) : ImmutableMap.of();
- this.command = command;
- this.status = status;
- this.hostConfig = hostConfig;
- this.ports = ports != null ? ImmutableList.copyOf(ports) : ImmutableList.of();
- this.hostnamePath = hostnamePath;
- }
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
- public String getId() {
- return id;
- }
+import com.google.auto.value.AutoValue;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
- public String getName() {
- return name;
- }
+@AutoValue
+public abstract class Container {
+ public abstract String id();
- public String getCreated() {
- return created;
- }
+ @Nullable public abstract String name();
- public String getPath() {
- return path;
- }
+ @Nullable public abstract String created();
- public String[] getArgs() {
- return args;
- }
+ @Nullable public abstract String path();
- public Config getContainerConfig() {
- return containerConfig;
- }
+ public abstract List args();
- public State getState() {
- return state;
- }
+ @Nullable public abstract Config config();
- public String getImage() {
- return image;
- }
+ @Nullable public abstract State state();
- public NetworkSettings getNetworkSettings() {
- return networkSettings;
- }
+ @Nullable public abstract String image();
- public String getResolvConfPath() {
- return resolvConfPath;
- }
+ @Nullable public abstract NetworkSettings networkSettings();
- public String getDriver() {
- return driver;
- }
+ @Nullable public abstract String resolvConfPath();
- public String getExecDriver() {
- return execDriver;
- }
+ @Nullable public abstract String driver();
- public Map getVolumes() {
- return volumes;
- }
-
- public Map getvolumesRW() {
- return volumesRW;
- }
+ @Nullable public abstract String execDriver();
- public String getCommand() {
- return command;
- }
+ public abstract Map volumes();
- public String getStatus() {
- return status;
- }
+ public abstract Map volumesRW();
- public HostConfig getHostConfig() {
- return hostConfig;
- }
+ @Nullable public abstract String command();
- public List getPorts() {
- return ports;
- }
+ @Nullable public abstract String status();
- public String getHostnamePath() {
- return hostnamePath;
- }
+ @Nullable public abstract HostConfig hostConfig();
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- Container that = (Container) o;
-
- return Objects.equal(this.id, that.id) &&
- Objects.equal(this.name, that.name) &&
- Objects.equal(this.created, that.created) &&
- Objects.equal(this.path, that.path) &&
- Arrays.equals(this.args, that.args) &&
- Objects.equal(this.containerConfig, that.containerConfig) &&
- Objects.equal(this.state, that.state) &&
- Objects.equal(this.image, that.image) &&
- Objects.equal(this.networkSettings, that.networkSettings) &&
- Objects.equal(this.resolvConfPath, that.resolvConfPath) &&
- Objects.equal(this.driver, that.driver) &&
- Objects.equal(this.execDriver, that.execDriver) &&
- Objects.equal(this.volumes, that.volumes) &&
- Objects.equal(this.volumesRW, that.volumesRW) &&
- Objects.equal(this.command, that.command) &&
- Objects.equal(this.status, that.status) &&
- Objects.equal(this.hostConfig, that.hostConfig) &&
- Objects.equal(this.ports, that.ports) &&
- Objects.equal(this.hostnamePath, that.hostnamePath);
- }
+ public abstract List ports();
- @Override
- public int hashCode() {
- return Objects.hashCode(id, name, created, path, args, containerConfig, state, image, networkSettings, resolvConfPath,
- driver, execDriver, volumes, volumesRW, command, status, hostConfig, ports, hostnamePath);
- }
+ @Nullable public abstract String hostnamePath();
- @Override
- public String toString() {
- return Objects.toStringHelper(this)
- .add("id", id)
- .add("name", name)
- .add("created", created)
- .add("path", path)
- .add("args", args)
- .add("containerConfig", containerConfig)
- .add("state", state)
- .add("image", image)
- .add("networkSettings", networkSettings)
- .add("resolvConfPath", resolvConfPath)
- .add("driver", driver)
- .add("execDriver", execDriver)
- .add("volumes", volumes)
- .add("volumesRW", volumesRW)
- .add("command", command)
- .add("status", status)
- .add("hostConfig", hostConfig)
- .add("ports", ports)
- .add("hostnamePath", hostnamePath)
- .toString();
+ @SerializedNames(
+ { "Id", "Name", "Created", "Path", "Args", "Config", "State", "Image", "NetworkSettings", "ResolvConfPath",
+ "Driver", "ExecDriver", "Volumes", "VolumesRW", "Command", "Status", "HostConfig", "Ports",
+ "HostnamePath" })
+ public static Container create(String id, String name, String created, String path, List args, Config config,
+ State state, String image, NetworkSettings networkSettings, String resolvConfPath, String driver,
+ String execDriver, Map volumes, Map volumesRW, String command, String status,
+ HostConfig hostConfig, List ports, String hostnamePath) {
+ return new AutoValue_Container(id, name, created, path, copyOf(args), config, state, image, networkSettings,
+ resolvConfPath, driver, execDriver, copyOf(volumes), copyOf(volumesRW), command, status, hostConfig,
+ copyOf(ports), hostnamePath);
}
public static Builder builder() {
@@ -248,8 +95,8 @@ public static final class Builder {
private String name;
private String created;
private String path;
- private String[] args;
- private Config containerConfig;
+ private List args;
+ private Config config;
private State state;
private String image;
private NetworkSettings networkSettings;
@@ -284,13 +131,13 @@ public Builder path(String path) {
return this;
}
- public Builder args(String[] args) {
+ public Builder args(List args) {
this.args = args;
return this;
}
- public Builder containerConfig(Config containerConfig) {
- this.containerConfig = containerConfig;
+ public Builder config(Config config) {
+ this.config = config;
return this;
}
@@ -360,31 +207,16 @@ public Builder hostnamePath(String hostnamePath) {
}
public Container build() {
- return new Container(id, name, created, path, args, containerConfig, state, image, networkSettings, resolvConfPath,
+ return Container.create(id, name, created, path, args, config, state, image, networkSettings, resolvConfPath,
driver, execDriver, volumes, volumesRW, command, status, hostConfig, ports, hostnamePath);
}
public Builder fromContainer(Container in) {
- return this
- .id(in.getId())
- .name(in.getName())
- .created(in.getCreated())
- .path(in.getPath())
- .args(in.getArgs())
- .containerConfig(in.getContainerConfig())
- .state(in.getState())
- .image(in.getImage())
- .networkSettings(in.getNetworkSettings())
- .resolvConfPath(in.getResolvConfPath())
- .driver(in.getDriver())
- .execDriver(in.getExecDriver())
- .volumes(in.getVolumes())
- .volumesRW(in.getvolumesRW())
- .command(in.getCommand())
- .status(in.getStatus())
- .hostConfig(in.getHostConfig())
- .ports(in.getPorts())
- .hostnamePath(in.getHostnamePath());
+ return this.id(in.id()).name(in.name()).created(in.created()).path(in.path()).args(in.args())
+ .config(in.config()).state(in.state()).image(in.image()).networkSettings(in.networkSettings())
+ .resolvConfPath(in.resolvConfPath()).driver(in.driver()).execDriver(in.execDriver())
+ .volumes(in.volumes()).volumesRW(in.volumesRW()).command(in.command()).status(in.status())
+ .hostConfig(in.hostConfig()).ports(in.ports()).hostnamePath(in.hostnamePath());
}
}
}
diff --git a/docker/src/main/java/org/jclouds/docker/domain/ExposedPorts.java b/docker/src/main/java/org/jclouds/docker/domain/ExposedPorts.java
index b7a831a64..413c84f49 100644
--- a/docker/src/main/java/org/jclouds/docker/domain/ExposedPorts.java
+++ b/docker/src/main/java/org/jclouds/docker/domain/ExposedPorts.java
@@ -16,91 +16,22 @@
*/
package org.jclouds.docker.domain;
-import static com.google.common.base.Preconditions.checkNotNull;
-import java.beans.ConstructorProperties;
-import java.util.Set;
+import static org.jclouds.docker.internal.NullSafeCopies.copyOf;
-import org.jclouds.javax.annotation.Nullable;
+import java.util.List;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSet;
-import com.google.gson.annotations.SerializedName;
+import org.jclouds.json.SerializedNames;
-public class ExposedPorts {
+import com.google.auto.value.AutoValue;
- @SerializedName("PortAndProtocol")
- private final String portAndProtocol;
- @SerializedName("HostPorts")
- private final Set hostPorts;
+@AutoValue
+public abstract class ExposedPorts {
+ public abstract String portAndProtocol();
- @ConstructorProperties({ "PortAndProtocol", "HostPorts" })
- protected ExposedPorts(String portAndProtocol, @Nullable Set hostPorts) {
- this.portAndProtocol = checkNotNull(portAndProtocol, "portAndProtocol");
- this.hostPorts = hostPorts != null ? ImmutableSet.copyOf(hostPorts) : ImmutableSet. of();
- }
-
- public String getPortAndProtocol() {
- return portAndProtocol;
- }
-
- public Set getHostPorts() {
- return hostPorts;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- ExposedPorts that = (ExposedPorts) o;
-
- return Objects.equal(this.portAndProtocol, that.portAndProtocol) &&
- Objects.equal(this.hostPorts, that.hostPorts);
- }
-
- @Override
- public int hashCode() {
- return Objects.hashCode(portAndProtocol, hostPorts);
- }
-
- @Override
- public String toString() {
- return Objects.toStringHelper(this)
- .add("portAndProtocol", portAndProtocol)
- .add("hostPorts", hostPorts)
- .toString();
- }
-
- public static Builder builder() {
- return new Builder();
- }
-
- public Builder toBuilder() {
- return builder().fromExposedPorts(this);
- }
-
- public static final class Builder {
-
- private String portAndProtocol;
- private Set hostPorts = ImmutableSet.of();
-
- public Builder portAndProtocol(String portAndProtocol) {
- this.portAndProtocol = portAndProtocol;
- return this;
- }
-
- public Builder hostPorts(Set hostPorts) {
- this.hostPorts = ImmutableSet.copyOf(checkNotNull(hostPorts, "hostPorts"));
- return this;
- }
-
- public ExposedPorts build() {
- return new ExposedPorts(portAndProtocol, hostPorts);
- }
+ public abstract List hostPorts();
- public Builder fromExposedPorts(ExposedPorts in) {
- return this.portAndProtocol(in.getPortAndProtocol())
- .hostPorts(in.getHostPorts());
- }
+ @SerializedNames({ "PortAndProtocol", "HostPorts" })
+ public static ExposedPorts create(String portAndProtocol, List hostPorts) {
+ return new AutoValue_ExposedPorts(portAndProtocol, copyOf(hostPorts));
}
}
diff --git a/docker/src/main/java/org/jclouds/docker/domain/HostConfig.java b/docker/src/main/java/org/jclouds/docker/domain/HostConfig.java
index 275961fe9..757157c45 100644
--- a/docker/src/main/java/org/jclouds/docker/domain/HostConfig.java
+++ b/docker/src/main/java/org/jclouds/docker/domain/HostConfig.java
@@ -17,136 +17,47 @@
package org.jclouds.docker.domain;
import static com.google.common.base.Preconditions.checkNotNull;
-import java.beans.ConstructorProperties;
+import static org.jclouds.docker.internal.NullSafeCopies.copyOf;
+
import java.util.List;
import java.util.Map;
import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
+import com.google.auto.value.AutoValue;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import com.google.gson.annotations.SerializedName;
-
-public class HostConfig {
-
- @SerializedName("ContainerIDFile")
- private final String containerIDFile;
- @SerializedName("Binds")
- private final List binds;
- @SerializedName("LxcConf")
- private final Map lxcConf;
- @SerializedName("Privileged")
- private final boolean privileged;
- @SerializedName("Dns")
- private final String dns;
- @SerializedName("DnsSearch")
- private final String dnsSearch;
- @SerializedName("PortBindings")
- private final Map>> portBindings;
- @SerializedName("Links")
- private final List links;
- @SerializedName("PublishAllPorts")
- private final boolean publishAllPorts;
- @SerializedName("VolumesFrom")
- private final List volumesFrom;
-
- @ConstructorProperties({ "ContainerIDFile", "Binds", "LxcConf", "Privileged", "Dns", "DnsSearch", "PortBindings",
- "Links", "PublishAllPorts", "VolumesFrom" })
- protected HostConfig(@Nullable String containerIDFile, @Nullable List binds,
- Map lxcConf, boolean privileged, @Nullable String dns,
- @Nullable String dnsSearch, @Nullable Map>> portBindings,
- @Nullable List links, boolean publishAllPorts, @Nullable List volumesFrom) {
- this.containerIDFile = containerIDFile;
- this.binds = binds != null ? ImmutableList.copyOf(binds) : ImmutableList. of();
- this.lxcConf = lxcConf != null ? ImmutableMap.copyOf(lxcConf) : ImmutableMap. of();
- this.privileged = checkNotNull(privileged, "privileged");
- this.dns = dns;
- this.dnsSearch = dnsSearch;
- this.portBindings = portBindings != null ? ImmutableMap.copyOf(portBindings) : ImmutableMap.>> of();
- this.links = links != null ? ImmutableList.copyOf(links) : ImmutableList. of();
- this.publishAllPorts = checkNotNull(publishAllPorts, "publishAllPorts");
- this.volumesFrom = volumesFrom != null ? ImmutableList.copyOf(volumesFrom) : ImmutableList. of();
- }
-
- public String getContainerIDFile() {
- return containerIDFile;
- }
-
- public List getBinds() {
- return binds;
- }
- public Map getLxcConf() {
- return lxcConf;
- }
+@AutoValue
+public abstract class HostConfig {
+ @Nullable public abstract String containerIDFile();
- public boolean isPrivileged() {
- return privileged;
- }
+ public abstract List binds();
- public String getDns() { return dns; }
+ public abstract Map lxcConf();
- public String getDnsSearch() { return dnsSearch; }
+ public abstract boolean privileged();
- public Map>> getPortBindings() {
- return portBindings;
- }
+ @Nullable public abstract String dns();
- @Nullable
- public List getLinks() {
- return links;
- }
+ @Nullable public abstract String dnsSearch();
- public boolean isPublishAllPorts() {
- return publishAllPorts;
- }
+ public abstract Map>> portBindings();
- public List getVolumesFrom() {
- return volumesFrom;
- }
+ public abstract List links();
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- HostConfig that = (HostConfig) o;
-
- return Objects.equal(this.containerIDFile, that.containerIDFile) &&
- Objects.equal(this.binds, that.binds) &&
- Objects.equal(this.lxcConf, that.lxcConf) &&
- Objects.equal(this.privileged, that.privileged) &&
- Objects.equal(this.dns, that.dns) &&
- Objects.equal(this.dnsSearch, that.dnsSearch) &&
- Objects.equal(this.portBindings, that.portBindings) &&
- Objects.equal(this.links, that.links) &&
- Objects.equal(this.publishAllPorts, that.publishAllPorts) &&
- Objects.equal(this.volumesFrom, that.volumesFrom);
- }
+ public abstract boolean publishAllPorts();
- @Override
- public int hashCode() {
- return Objects.hashCode(containerIDFile, binds, lxcConf, privileged, dns, dnsSearch, portBindings, links,
- publishAllPorts, volumesFrom);
- }
+ public abstract List volumesFrom();
- @Override
- public String toString() {
- return Objects.toStringHelper(this)
- .add("containerIDFile", containerIDFile)
- .add("binds", binds)
- .add("lxcConf", lxcConf)
- .add("privileged", privileged)
- .add("dns", dns)
- .add("dnsSearch", dnsSearch)
- .add("portBindings", portBindings)
- .add("links", links)
- .add("publishAllPorts", publishAllPorts)
- .add("volumesFrom", volumesFrom)
- .toString();
+ @SerializedNames({ "ContainerIDFile", "Binds", "LxcConf", "Privileged", "Dns", "DnsSearch", "PortBindings",
+ "Links", "PublishAllPorts", "VolumesFrom" })
+ public static HostConfig create(String containerIDFile, List binds, Map lxcConf,
+ boolean privileged, String dns, String dnsSearch, Map>> portBindings,
+ List links, boolean publishAllPorts, List volumesFrom) {
+ return new AutoValue_HostConfig(containerIDFile, copyOf(binds), copyOf(lxcConf), privileged, dns, dnsSearch,
+ copyOf(portBindings), copyOf(links), publishAllPorts, copyOf(volumesFrom));
}
public static Builder builder() {
@@ -221,22 +132,14 @@ public Builder volumesFrom(List volumesFrom) {
}
public HostConfig build() {
- return new HostConfig(containerIDFile, binds, lxcConf, privileged, dns, dnsSearch, portBindings, links,
- publishAllPorts, volumesFrom);
+ return HostConfig.create(containerIDFile, binds, lxcConf, privileged, dns, dnsSearch, portBindings, links,
+ publishAllPorts, volumesFrom);
}
public Builder fromHostConfig(HostConfig in) {
- return this
- .containerIDFile(in.getContainerIDFile())
- .binds(in.getBinds())
- .lxcConf(in.getLxcConf())
- .privileged(in.isPrivileged())
- .dns(in.getDns())
- .dnsSearch(in.getDnsSearch())
- .links(in.getLinks())
- .portBindings(in.getPortBindings())
- .publishAllPorts(in.isPublishAllPorts())
- .volumesFrom(in.getVolumesFrom());
+ return this.containerIDFile(in.containerIDFile()).binds(in.binds()).lxcConf(in.lxcConf())
+ .privileged(in.privileged()).dns(in.dns()).dnsSearch(in.dnsSearch()).links(in.links())
+ .portBindings(in.portBindings()).publishAllPorts(in.publishAllPorts()).volumesFrom(in.volumesFrom());
}
}
}
diff --git a/docker/src/main/java/org/jclouds/docker/domain/Image.java b/docker/src/main/java/org/jclouds/docker/domain/Image.java
index 186ece32f..99b25943e 100644
--- a/docker/src/main/java/org/jclouds/docker/domain/Image.java
+++ b/docker/src/main/java/org/jclouds/docker/domain/Image.java
@@ -16,224 +16,42 @@
*/
package org.jclouds.docker.domain;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.gson.annotations.SerializedName;
-import org.jclouds.javax.annotation.Nullable;
+import static org.jclouds.docker.internal.NullSafeCopies.copyOf;
-import java.beans.ConstructorProperties;
import java.util.List;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-public class Image {
-
- @SerializedName("Id")
- private final String id;
- @SerializedName("Parent")
- private final String parent;
- @SerializedName("Created")
- private final String created;
- @SerializedName("Container")
- private final String container;
- @SerializedName("DockerVersion")
- private final String dockerVersion;
- @SerializedName("Architecture")
- private final String architecture;
- @SerializedName("Os")
- private final String os;
- @SerializedName("Size")
- private final long size;
- @SerializedName("VirtualSize")
- private final long virtualSize;
- @SerializedName("RepoTags")
- private final List repoTags;
-
- @ConstructorProperties({ "Id", "Parent", "Created", "Container", "DockerVersion", "Architecture", "Os", "Size",
- "VirtualSize", "RepoTags", "Architecture" })
- protected Image(String id, @Nullable String parent, @Nullable String created, @Nullable String container,
- @Nullable String dockerVersion, @Nullable String architecture, @Nullable String os, long size,
- @Nullable long virtualSize, @Nullable List repoTags) {
- this.id = checkNotNull(id, "id");
- this.parent = parent;
- this.created = created;
- this.container = container;
- this.dockerVersion = dockerVersion;
- this.architecture = architecture;
- this.os = os;
- this.size = size;
- this.virtualSize = virtualSize;
- this.repoTags = repoTags != null ? ImmutableList.copyOf(repoTags) : ImmutableList. of();
- }
-
- public String getId() {
- return id;
- }
-
- public String getParent() {
- return parent;
- }
-
- public String getCreated() {
- return created;
- }
-
- public String getContainer() {
- return container;
- }
-
- public String getDockerVersion() {
- return dockerVersion;
- }
-
- public String getArchitecture() {
- return architecture;
- }
-
- public String getOs() {
- return os;
- }
-
- public long getSize() {
- return size;
- }
-
- public long getVirtualSize() {
- return virtualSize;
- }
-
- public List getRepoTags() {
- return repoTags;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- Image that = (Image) o;
-
- return Objects.equal(this.id, that.id) &&
- Objects.equal(this.parent, that.parent) &&
- Objects.equal(this.created, that.created) &&
- Objects.equal(this.container, that.container) &&
- Objects.equal(this.dockerVersion, that.dockerVersion) &&
- Objects.equal(this.architecture, that.architecture) &&
- Objects.equal(this.os, that.os) &&
- Objects.equal(this.size, that.size) &&
- Objects.equal(this.virtualSize, that.virtualSize);
- }
-
- @Override
- public int hashCode() {
- return Objects.hashCode(id, parent, created, container, dockerVersion, architecture, os, size,
- virtualSize);
- }
-
- @Override
- public String toString() {
- return Objects.toStringHelper(this)
- .add("id", id)
- .add("parent", parent)
- .add("created", created)
- .add("container", container)
- .add("dockerVersion", dockerVersion)
- .add("architecture", architecture)
- .add("os", os)
- .add("size", size)
- .add("virtualSize", virtualSize)
- .add("repoTags", repoTags)
- .toString();
- }
-
- public static Builder builder() {
- return new Builder();
- }
-
- public Builder toBuilder() {
- return builder().fromImage(this);
- }
-
- public static final class Builder {
-
- private String id;
- private String parent;
- private String created;
- private String container;
- private String dockerVersion;
- private String architecture;
- private String os;
- private long size;
- private long virtualSize;
- private List repoTags = ImmutableList.of();
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
- public Builder id(String id) {
- this.id = id;
- return this;
- }
+import com.google.auto.value.AutoValue;
- public Builder parent(String parent) {
- this.parent = parent;
- return this;
- }
+@AutoValue
+public abstract class Image {
+ public abstract String id();
- public Builder created(String created) {
- this.created = created;
- return this;
- }
+ @Nullable public abstract String parent();
- public Builder container(String container) {
- this.container = container;
- return this;
- }
+ @Nullable public abstract String created();
- public Builder dockerVersion(String dockerVersion) {
- this.dockerVersion = dockerVersion;
- return this;
- }
+ @Nullable public abstract String container();
- public Builder architecture(String architecture) {
- this.architecture = architecture;
- return this;
- }
+ @Nullable public abstract String dockerVersion();
- public Builder os(String os) {
- this.os = os;
- return this;
- }
+ @Nullable public abstract String architecture();
- public Builder size(long size) {
- this.size = size;
- return this;
- }
+ @Nullable public abstract String os();
- public Builder virtualSize(long virtualSize) {
- this.virtualSize = virtualSize;
- return this;
- }
+ public abstract long size();
- public Builder repoTags(List repoTags) {
- this.repoTags = ImmutableList.copyOf(checkNotNull(repoTags, "repoTags"));
- return this;
- }
+ @Nullable public abstract long virtualSize();
- public Image build() {
- return new Image(id, parent, created, container, dockerVersion, architecture, os, size,
- virtualSize, repoTags);
- }
+ public abstract List repoTags();
- public Builder fromImage(Image in) {
- return this
- .id(in.getId())
- .parent(in.getParent())
- .created(in.getCreated())
- .container(in.getContainer())
- .dockerVersion(in.getDockerVersion())
- .architecture(in.getArchitecture())
- .os(in.getOs())
- .size(in.getSize())
- .virtualSize(in.getVirtualSize());
- //DO NOT add .repoTags(in.getRepoTags());
- }
+ @SerializedNames({ "Id", "Parent", "Created", "Container", "DockerVersion", "Architecture", "Os", "Size",
+ "VirtualSize", "RepoTags", "Architecture" })
+ public static Image create(String id, String parent, String created, String container, String dockerVersion,
+ String architecture, String os, long size, long virtualSize, List repoTags) {
+ return new AutoValue_Image(id, parent, created, container, dockerVersion, architecture, os, size, virtualSize,
+ copyOf(repoTags));
}
}
diff --git a/docker/src/main/java/org/jclouds/docker/domain/NetworkSettings.java b/docker/src/main/java/org/jclouds/docker/domain/NetworkSettings.java
index 23f3fbede..f99bd7f3d 100644
--- a/docker/src/main/java/org/jclouds/docker/domain/NetworkSettings.java
+++ b/docker/src/main/java/org/jclouds/docker/domain/NetworkSettings.java
@@ -16,97 +16,36 @@
*/
package org.jclouds.docker.domain;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableMap;
-import com.google.gson.annotations.SerializedName;
-import org.jclouds.javax.annotation.Nullable;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.jclouds.docker.internal.NullSafeCopies.copyOf;
-import java.beans.ConstructorProperties;
import java.util.List;
import java.util.Map;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-public class NetworkSettings {
-
- @SerializedName("IPAddress")
- private final String ipAddress;
- @SerializedName("IPPrefixLen")
- private final int ipPrefixLen;
- @SerializedName("Gateway")
- private final String gateway;
- @SerializedName("Bridge")
- private final String bridge;
- @SerializedName("PortMapping")
- private final String portMapping;
- @SerializedName("Ports")
- private final Map>> ports;
-
- @ConstructorProperties({ "IPAddress", "IPPrefixLen", "Gateway", "Bridge", "PortMapping", "Ports" })
- protected NetworkSettings(String ipAddress, int ipPrefixLen, String gateway, String bridge,
- @Nullable String portMapping, @Nullable Map>> ports) {
- this.ipAddress = checkNotNull(ipAddress, "ipAddress");
- this.ipPrefixLen = checkNotNull(ipPrefixLen, "ipPrefixLen");
- this.gateway = checkNotNull(gateway, "gateway");
- this.bridge = checkNotNull(bridge, "bridge");
- this.portMapping = portMapping;
- this.ports = ports != null ? ImmutableMap.copyOf(ports) : ImmutableMap.>> of();
- }
-
- public String getIpAddress() {
- return ipAddress;
- }
-
- public int getIpPrefixLen() {
- return ipPrefixLen;
- }
-
- public String getGateway() {
- return gateway;
- }
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
- public String getBridge() {
- return bridge;
- }
+import com.google.auto.value.AutoValue;
+import com.google.common.collect.ImmutableMap;
- public String getPortMapping() {
- return portMapping;
- }
+@AutoValue
+public abstract class NetworkSettings {
+ public abstract String ipAddress();
- public Map>> getPorts() {
- return ports;
- }
+ public abstract int ipPrefixLen();
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ public abstract String gateway();
- NetworkSettings that = (NetworkSettings) o;
+ public abstract String bridge();
- return Objects.equal(this.ipAddress, that.ipAddress) &&
- Objects.equal(this.ipPrefixLen, that.ipPrefixLen) &&
- Objects.equal(this.gateway, that.gateway) &&
- Objects.equal(this.bridge, that.bridge) &&
- Objects.equal(this.portMapping, that.portMapping) &&
- Objects.equal(this.ports, that.ports);
- }
+ @Nullable public abstract String portMapping();
- @Override
- public int hashCode() {
- return Objects.hashCode(ipAddress, ipPrefixLen, gateway, bridge, portMapping, ports);
- }
+ public abstract Map>> ports();
- @Override
- public String toString() {
- return Objects.toStringHelper(this)
- .add("ipAddress", ipAddress)
- .add("ipPrefixLen", ipPrefixLen)
- .add("gateway", gateway)
- .add("bridge", bridge)
- .add("portMapping", portMapping)
- .add("ports", ports)
- .toString();
+ @SerializedNames({ "IPAddress", "IPPrefixLen", "Gateway", "Bridge", "PortMapping", "Ports" })
+ public static NetworkSettings create(String ipAddress, int ipPrefixLen, String gateway, String bridge,
+ String portMapping, Map>> ports) {
+ return new AutoValue_NetworkSettings(ipAddress, ipPrefixLen, gateway, bridge, portMapping, copyOf(ports));
}
public static Builder builder() {
@@ -157,19 +96,13 @@ public Builder ports(Map>> ports) {
}
public NetworkSettings build() {
- return new NetworkSettings(ipAddress, ipPrefixLen, gateway, bridge, portMapping, ports);
+ return NetworkSettings.create(ipAddress, ipPrefixLen, gateway, bridge, portMapping, ports);
}
public Builder fromNetworkSettings(NetworkSettings in) {
- return this
- .ipAddress(in.getIpAddress())
- .ipPrefixLen(in.getIpPrefixLen())
- .gateway(in.getGateway())
- .bridge(in.getBridge())
- .portMapping(in.getPortMapping())
- .ports(in.getPorts());
+ return this.ipAddress(in.ipAddress()).ipPrefixLen(in.ipPrefixLen()).gateway(in.gateway()).bridge(in.bridge())
+ .portMapping(in.portMapping()).ports(in.ports());
}
-
}
}
diff --git a/docker/src/main/java/org/jclouds/docker/domain/Port.java b/docker/src/main/java/org/jclouds/docker/domain/Port.java
index b49dfa694..0522be185 100644
--- a/docker/src/main/java/org/jclouds/docker/domain/Port.java
+++ b/docker/src/main/java/org/jclouds/docker/domain/Port.java
@@ -16,73 +16,22 @@
*/
package org.jclouds.docker.domain;
-import com.google.common.base.Objects;
-import com.google.gson.annotations.SerializedName;
+import org.jclouds.json.SerializedNames;
-import java.beans.ConstructorProperties;
+import com.google.auto.value.AutoValue;
-import static com.google.common.base.Preconditions.checkNotNull;
+@AutoValue
+public abstract class Port {
+ public abstract String ip();
-public class Port {
+ public abstract int privatePort();
- @SerializedName("PrivatePort")
- private final int privatePort;
- @SerializedName("PublicPort")
- private final int publicPort;
- @SerializedName("Type")
- private final String type;
- @SerializedName("IP")
- private final String ip;
+ public abstract int publicPort();
- @ConstructorProperties({ "PrivatePort", "PublicPort", "Type", "IP" })
- protected Port(int privatePort, int publicPort, String type, String ip) {
- this.privatePort = checkNotNull(privatePort, "privatePort");
- this.publicPort = checkNotNull(publicPort, "publicPort");
- this.type = checkNotNull(type, "type");
- this.ip = checkNotNull(ip, "ip");
- }
-
- public int getPrivatePort() {
- return privatePort;
- }
-
- public int getPublicPort() {
- return publicPort;
- }
-
- public String getType() {
- return type;
- }
-
- public String getIp() {
- return ip;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- Port that = (Port) o;
-
- return Objects.equal(this.privatePort, that.privatePort) &&
- Objects.equal(this.publicPort, that.publicPort) &&
- Objects.equal(this.type, that.type) &&
- Objects.equal(this.ip, that.ip);
- }
-
- @Override
- public int hashCode() {
- return Objects.hashCode(privatePort, publicPort, type, ip);
- }
+ public abstract String type();
- @Override
- public String toString() {
- return Objects.toStringHelper(this)
- .add("privatePort", privatePort)
- .add("publicPort", publicPort)
- .add("type", type)
- .add("ip", ip)
- .toString();
+ @SerializedNames({ "IP", "PrivatePort", "PublicPort", "Type" })
+ public static Port create(String ip, int privatePort, int publicPort, String type) {
+ return new AutoValue_Port(ip, privatePort, publicPort, type);
}
}
diff --git a/docker/src/main/java/org/jclouds/docker/domain/State.java b/docker/src/main/java/org/jclouds/docker/domain/State.java
index ac1ba85e0..c0a858602 100644
--- a/docker/src/main/java/org/jclouds/docker/domain/State.java
+++ b/docker/src/main/java/org/jclouds/docker/domain/State.java
@@ -16,151 +16,27 @@
*/
package org.jclouds.docker.domain;
-import static com.google.common.base.Preconditions.checkNotNull;
-import java.beans.ConstructorProperties;
+import org.jclouds.json.SerializedNames;
-import com.google.common.base.Objects;
-import com.google.gson.annotations.SerializedName;
+import com.google.auto.value.AutoValue;
-public class State {
- @SerializedName("Pid")
- private final int pid;
- @SerializedName("Running")
- private final boolean running;
- @SerializedName("ExitCode")
- private final int exitCode;
- @SerializedName("StartedAt")
- private final String startedAt;
- @SerializedName("FinishedAt")
- private final String finishedAt;
- @SerializedName("Ghost")
- private final boolean ghost;
+@AutoValue
+public abstract class State {
+ public abstract int pid();
- @ConstructorProperties({ "Pid", "Running", "ExitCode", "StartedAt", "FinishedAt", "Ghost" })
- protected State(int pid, boolean running, int exitCode, String startedAt, String finishedAt, boolean ghost) {
- this.pid = checkNotNull(pid, "pid");
- this.running = checkNotNull(running, "running");
- this.exitCode = checkNotNull(exitCode, "exitCode");
- this.startedAt = checkNotNull(startedAt, "startedAt");
- this.finishedAt = checkNotNull(finishedAt, "finishedAt");
- this.ghost = checkNotNull(ghost, "ghost");
- }
-
- public int getPid() {
- return pid;
- }
-
- public boolean isRunning() {
- return running;
- }
-
- public int getExitCode() {
- return exitCode;
- }
-
- public String getStartedAt() {
- return startedAt;
- }
-
- public String getFinishedAt() {
- return finishedAt;
- }
-
- public boolean isGhost() {
- return ghost;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- State that = (State) o;
-
- return Objects.equal(this.pid, that.pid) &&
- Objects.equal(this.running, that.running) &&
- Objects.equal(this.exitCode, that.exitCode) &&
- Objects.equal(this.startedAt, that.startedAt) &&
- Objects.equal(this.finishedAt, that.finishedAt) &&
- Objects.equal(this.ghost, that.ghost);
- }
-
- @Override
- public int hashCode() {
- return Objects.hashCode(pid, running, exitCode, startedAt, finishedAt, ghost);
- }
-
- @Override
- public String toString() {
- return Objects.toStringHelper(this)
- .add("pid", pid)
- .add("running", running)
- .add("exitCode", exitCode)
- .add("startedAt", startedAt)
- .add("finishedAt", finishedAt)
- .add("ghost", ghost)
- .toString();
- }
-
- public static Builder builder() {
- return new Builder();
- }
-
- public Builder toBuilder() {
- return builder().fromState(this);
- }
-
- public static final class Builder {
-
- private int pid;
- private boolean running;
- private int exitCode;
- private String startedAt;
- private String finishedAt;
- private boolean ghost;
-
- public Builder pid(int pid) {
- this.pid = pid;
- return this;
- }
-
- public Builder running(boolean running) {
- this.running = running;
- return this;
- }
-
- public Builder exitCode(int exitCode) {
- this.exitCode = exitCode;
- return this;
- }
+ public abstract boolean running();
- public Builder startedAt(String startedAt) {
- this.startedAt = startedAt;
- return this;
- }
+ public abstract int exitCode();
- public Builder finishedAt(String finishedAt) {
- this.finishedAt = finishedAt;
- return this;
- }
+ public abstract String startedAt();
- public Builder ghost(boolean ghost) {
- this.ghost = ghost;
- return this;
- }
+ public abstract String finishedAt();
- public State build() {
- return new State(pid, running, exitCode, startedAt, finishedAt, ghost);
- }
+ public abstract boolean ghost();
- public Builder fromState(State in) {
- return this
- .pid(in.getPid())
- .running(in.isRunning())
- .exitCode(in.getExitCode())
- .startedAt(in.getStartedAt())
- .finishedAt(in.getFinishedAt())
- .ghost(in.isGhost());
- }
+ @SerializedNames({ "Pid", "Running", "ExitCode", "StartedAt", "FinishedAt", "Ghost" })
+ public static State create(int pid, boolean running, int exitCode, String startedAt, String finishedAt,
+ boolean ghost) {
+ return new AutoValue_State(pid, running, exitCode, startedAt, finishedAt, ghost);
}
}
diff --git a/docker/src/main/java/org/jclouds/docker/domain/Version.java b/docker/src/main/java/org/jclouds/docker/domain/Version.java
index 445a225c3..ee0ba1972 100644
--- a/docker/src/main/java/org/jclouds/docker/domain/Version.java
+++ b/docker/src/main/java/org/jclouds/docker/domain/Version.java
@@ -16,151 +16,27 @@
*/
package org.jclouds.docker.domain;
-import static com.google.common.base.Preconditions.checkNotNull;
-import java.beans.ConstructorProperties;
+import org.jclouds.json.SerializedNames;
-import com.google.common.base.Objects;
-import com.google.gson.annotations.SerializedName;
+import com.google.auto.value.AutoValue;
-public class Version {
- @SerializedName("Arch")
- private final String arch;
- @SerializedName("GitCommit")
- private final String gitCommit;
- @SerializedName("GoVersion")
- private final String goVersion;
- @SerializedName("KernelVersion")
- private final String kernelVersion;
- @SerializedName("Os")
- private final String os;
- @SerializedName("Version")
- private final String version;
+@AutoValue
+public abstract class Version {
+ public abstract String arch();
- @ConstructorProperties({ "Arch", "GitCommit", "GoVersion", "KernelVersion", "Os", "Version" })
- protected Version(String arch, String gitCommit, String goVersion, String kernelVersion, String os, String version) {
- this.arch = checkNotNull(arch, "arch");
- this.gitCommit = checkNotNull(gitCommit, "gitCommit");
- this.goVersion = checkNotNull(goVersion, "goVersion");
- this.kernelVersion = checkNotNull(kernelVersion, "kernelVersion");
- this.os = checkNotNull(os, "os");
- this.version = checkNotNull(version, "version");
- }
-
- public String getArch() {
- return arch;
- }
-
- public String getGitCommit() {
- return gitCommit;
- }
-
- public String getGoVersion() {
- return goVersion;
- }
-
- public String getKernelVersion() {
- return kernelVersion;
- }
-
- public String getOs() {
- return os;
- }
-
- public String getVersion() {
- return version;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- Version that = (Version) o;
-
- return Objects.equal(this.arch, that.arch) &&
- Objects.equal(this.gitCommit, that.gitCommit) &&
- Objects.equal(this.goVersion, that.goVersion) &&
- Objects.equal(this.kernelVersion, that.kernelVersion) &&
- Objects.equal(this.os, that.os) &&
- Objects.equal(this.version, that.version);
- }
-
- @Override
- public int hashCode() {
- return Objects.hashCode(arch, gitCommit, goVersion, kernelVersion, os, version);
- }
-
- @Override
- public String toString() {
- return Objects.toStringHelper(this)
- .add("arch", arch)
- .add("gitCommit", gitCommit)
- .add("goVersion", goVersion)
- .add("kernelVersion", kernelVersion)
- .add("os", os)
- .add("version", version)
- .toString();
- }
-
- public static Builder builder() {
- return new Builder();
- }
-
- public Builder toBuilder() {
- return builder().fromVersion(this);
- }
-
- public static final class Builder {
-
- private String arch;
- private String gitCommit;
- private String goVersion;
- private String kernelVersion;
- private String os;
- private String version;
-
- public Builder arch(String arch) {
- this.arch = arch;
- return this;
- }
-
- public Builder gitCommit(String gitCommit) {
- this.gitCommit = gitCommit;
- return this;
- }
-
- public Builder goVersion(String goVersion) {
- this.goVersion = goVersion;
- return this;
- }
+ public abstract String gitCommit();
- public Builder kernelVersion(String kernelVersion) {
- this.kernelVersion = kernelVersion;
- return this;
- }
+ public abstract String goVersion();
- public Builder os(String os) {
- this.os = os;
- return this;
- }
+ public abstract String kernelVersion();
- public Builder version(String version) {
- this.version = version;
- return this;
- }
+ public abstract String os();
- public Version build() {
- return new Version(arch, gitCommit, goVersion, kernelVersion, os, version);
- }
+ public abstract String version();
- public Builder fromVersion(Version in) {
- return this
- .arch(in.getArch())
- .gitCommit(in.getGitCommit())
- .goVersion(in.getGoVersion())
- .kernelVersion(in.getKernelVersion())
- .os(in.getOs())
- .version(in.getVersion());
- }
+ @SerializedNames({ "Arch", "GitCommit", "GoVersion", "KernelVersion", "Os", "Version" })
+ public static Version create(String arch, String gitCommit, String goVersion, String kernelVersion, String os,
+ String version) {
+ return new AutoValue_Version(arch, gitCommit, goVersion, kernelVersion, os, version);
}
}
diff --git a/docker/src/main/java/org/jclouds/docker/internal/NullSafeCopies.java b/docker/src/main/java/org/jclouds/docker/internal/NullSafeCopies.java
new file mode 100644
index 000000000..c02d44952
--- /dev/null
+++ b/docker/src/main/java/org/jclouds/docker/internal/NullSafeCopies.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.docker.internal;
+
+import java.util.List;
+import java.util.Map;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+
+public class NullSafeCopies {
+
+ public static Map copyOf(@Nullable Map map) {
+ return map != null ? ImmutableMap.copyOf(map) : ImmutableMap.of();
+ }
+
+ public static List copyOf(@Nullable List list) {
+ return list != null ? ImmutableList.copyOf(list) : ImmutableList.of();
+ }
+
+ private NullSafeCopies() {
+ }
+}
diff --git a/docker/src/test/java/org/jclouds/docker/compute/DockerComputeServiceAdapterLiveTest.java b/docker/src/test/java/org/jclouds/docker/compute/DockerComputeServiceAdapterLiveTest.java
index faee98267..b64dace91 100644
--- a/docker/src/test/java/org/jclouds/docker/compute/DockerComputeServiceAdapterLiveTest.java
+++ b/docker/src/test/java/org/jclouds/docker/compute/DockerComputeServiceAdapterLiveTest.java
@@ -61,7 +61,7 @@ public void testCreateNodeWithGroupEncodedIntoNameThenStoreCredentials() {
.osDescriptionMatches("jclouds/default:latest").build();
guest = adapter.createNodeWithGroupEncodedIntoName(group, name, template);
- assertEquals(guest.getNodeId(), guest.getNode().getId() + "");
+ assertEquals(guest.getNodeId(), guest.getNode().id() + "");
}
public void testListHardwareProfiles() {
@@ -76,7 +76,7 @@ public void testListHardwareProfiles() {
@AfterGroups(groups = "live")
protected void tearDown() {
if (guest != null) {
- adapter.destroyNode(guest.getNode().getId() + "");
+ adapter.destroyNode(guest.getNode().id() + "");
}
super.tearDown();
}
diff --git a/docker/src/test/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadataTest.java b/docker/src/test/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadataTest.java
index b062f2fbf..6e79685e9 100644
--- a/docker/src/test/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadataTest.java
+++ b/docker/src/test/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadataTest.java
@@ -21,6 +21,8 @@
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.testng.Assert.assertEquals;
+
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -65,7 +67,7 @@ public class ContainerToNodeMetadataTest {
public void setup() {
Config containerConfig = Config.builder()
.hostname("6d35806c1bd2")
- .domainName("")
+ .domainname("")
.user("")
.memory(0)
.memorySwap(0)
@@ -79,27 +81,27 @@ public void setup() {
.stdinOnce(false)
.env(null)
.cmd(ImmutableList.of("/usr/sbin/sshd", "-D"))
- .imageId("jclouds/ubuntu")
+ .image("jclouds/ubuntu")
.volumesFrom("")
.workingDir("")
.entrypoint(null)
.networkDisabled(false)
.build();
- State state = State.builder()
- .pid(3626)
- .running(true)
- .exitCode(0)
- .startedAt("2014-03-24T20:28:37.537659054Z")
- .finishedAt("0001-01-01T00:00:00Z")
- .ghost(false)
- .build();
+ State state = State.create( //
+ 3626, // pid
+ true, // running
+ 0, // exitCode
+ "2014-03-24T20:28:37.537659054Z", // startedAt
+ "0001-01-01T00:00:00Z", // finishedAt
+ false // ghost
+ );
container = Container.builder()
.id("6d35806c1bd2b25cd92bba2d2c2c5169dc2156f53ab45c2b62d76e2d2fee14a9")
.name("/hopeful_mclean")
.created("2014-03-22T07:16:45.784120972Z")
.path("/usr/sbin/sshd")
- .args(new String[] {"-D"})
- .containerConfig(containerConfig)
+ .args(Arrays.asList("-D"))
+ .config(containerConfig)
.state(state)
.image("af0f59f1c19eef9471c3b8c8d587c39b8f130560b54f3766931b37d76d5de4b6")
.networkSettings(NetworkSettings.builder()
@@ -190,12 +192,12 @@ public void testVirtualMachineToNodeMetadata() {
private Container mockContainer() {
Container mockContainer = EasyMock.createMock(Container.class);
- expect(mockContainer.getId()).andReturn(container.getId());
- expect(mockContainer.getName()).andReturn(container.getName());
- expect(mockContainer.getContainerConfig()).andReturn(container.getContainerConfig()).anyTimes();
- expect(mockContainer.getNetworkSettings()).andReturn(container.getNetworkSettings()).anyTimes();
- expect(mockContainer.getState()).andReturn(container.getState());
- expect(mockContainer.getImage()).andReturn(container.getImage()).anyTimes();
+ expect(mockContainer.id()).andReturn(container.id());
+ expect(mockContainer.name()).andReturn(container.name());
+ expect(mockContainer.config()).andReturn(container.config()).anyTimes();
+ expect(mockContainer.networkSettings()).andReturn(container.networkSettings()).anyTimes();
+ expect(mockContainer.state()).andReturn(container.state());
+ expect(mockContainer.image()).andReturn(container.image()).anyTimes();
replay(mockContainer);
return mockContainer;
diff --git a/docker/src/test/java/org/jclouds/docker/compute/functions/ImageToImageTest.java b/docker/src/test/java/org/jclouds/docker/compute/functions/ImageToImageTest.java
index 0141c70d5..0d357929e 100644
--- a/docker/src/test/java/org/jclouds/docker/compute/functions/ImageToImageTest.java
+++ b/docker/src/test/java/org/jclouds/docker/compute/functions/ImageToImageTest.java
@@ -39,14 +39,18 @@ public class ImageToImageTest {
@BeforeMethod
public void setup() {
- image = org.jclouds.docker.domain.Image.builder()
- .id("id")
- .parent("parent")
- .created("created")
- .architecture("x86_64")
- .repoTags(ImmutableList.of("repoTag1:version"))
- .size(0l)
- .build();
+ image = org.jclouds.docker.domain.Image.create(
+ "id", // id
+ "parent", // parent
+ "created", // created
+ null, // container
+ null, // dockerVersion
+ "x86_64", // architecture
+ null, // os
+ 0l, // size
+ 0l, // virtualSize
+ ImmutableList.of("repoTag1:version") // repoTags
+ );
function = new ImageToImage();
}
@@ -57,15 +61,15 @@ public void testImageToImage() {
verify(mockImage);
- assertEquals(mockImage.getId(), image.getId().toString());
+ assertEquals(mockImage.id(), image.getId().toString());
}
private org.jclouds.docker.domain.Image mockImage() {
org.jclouds.docker.domain.Image mockImage = EasyMock.createMock(org.jclouds.docker.domain.Image.class);
- expect(mockImage.getId()).andReturn(image.getId()).anyTimes();
- expect(mockImage.getRepoTags()).andReturn(image.getRepoTags()).anyTimes();
- expect(mockImage.getArchitecture()).andReturn(image.getArchitecture()).anyTimes();
+ expect(mockImage.id()).andReturn(image.id()).anyTimes();
+ expect(mockImage.repoTags()).andReturn(image.repoTags()).anyTimes();
+ expect(mockImage.architecture()).andReturn(image.architecture()).anyTimes();
replay(mockImage);
return mockImage;
diff --git a/docker/src/test/java/org/jclouds/docker/compute/functions/StateToStatusTest.java b/docker/src/test/java/org/jclouds/docker/compute/functions/StateToStatusTest.java
index b9739abc6..f66f04048 100644
--- a/docker/src/test/java/org/jclouds/docker/compute/functions/StateToStatusTest.java
+++ b/docker/src/test/java/org/jclouds/docker/compute/functions/StateToStatusTest.java
@@ -46,7 +46,7 @@ public void testStateRunningToStatusRunning() {
verify(mockState);
- assertEquals(mockState.isRunning(), true);
+ assertEquals(mockState.running(), true);
assertEquals(status, NodeMetadata.Status.RUNNING);
}
@@ -57,14 +57,14 @@ public void testStateNotRunningToStatusTerminated() {
verify(mockState);
- assertEquals(mockState.isRunning(), false);
+ assertEquals(mockState.running(), false);
assertEquals(status, NodeMetadata.Status.TERMINATED);
}
private State mockStateRunning() {
State mockState = EasyMock.createMock(State.class);
- expect(mockState.isRunning()).andReturn(true).anyTimes();
+ expect(mockState.running()).andReturn(true).anyTimes();
replay(mockState);
return mockState;
@@ -73,7 +73,7 @@ private State mockStateRunning() {
private State mockStateNotRunning() {
State mockState = EasyMock.createMock(State.class);
- expect(mockState.isRunning()).andReturn(false).anyTimes();
+ expect(mockState.running()).andReturn(false).anyTimes();
replay(mockState);
return mockState;
diff --git a/docker/src/test/java/org/jclouds/docker/config/DockerParserModuleTest.java b/docker/src/test/java/org/jclouds/docker/config/DockerParserModuleTest.java
index 4f5ba7586..57659c597 100644
--- a/docker/src/test/java/org/jclouds/docker/config/DockerParserModuleTest.java
+++ b/docker/src/test/java/org/jclouds/docker/config/DockerParserModuleTest.java
@@ -16,15 +16,18 @@
*/
package org.jclouds.docker.config;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+
import org.jclouds.docker.domain.Container;
-import org.testng.annotations.BeforeMethod;
+import org.jclouds.docker.domain.NetworkSettings;
+import org.jclouds.docker.domain.Port;
+import org.jclouds.json.Json;
+import org.jclouds.json.config.GsonModule;
import org.testng.annotations.Test;
-import static org.jclouds.docker.config.DockerParserModule.ContainerTypeAdapter;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
+import com.google.common.collect.ImmutableMap;
+import com.google.inject.Guice;
/**
* Unit tests for the {@link org.jclouds.docker.config.DockerParserModule} class.
@@ -32,21 +35,27 @@
@Test(groups = "unit", testName = "DockerParserModuleTest")
public class DockerParserModuleTest {
- private Gson gson;
+ private Json json = Guice.createInjector(new GsonModule(), new DockerParserModule()).getInstance(Json.class);
- @BeforeMethod
- public void setup() {
- gson = new GsonBuilder()
- .registerTypeAdapter(Container.class, new ContainerTypeAdapter())
- .create();
- }
-
- @Test
public void testContainerWithVolumesNull() {
- Container container = gson.fromJson(
- "{ \"Volumes\": null }", Container.class);
+ Container container = json.fromJson("{ \"Id\": \"foo\", \"Volumes\": null }", Container.class);
assertNotNull(container);
- assertEquals(container.getVolumes(), null);
+ assertEquals(container.id(), "foo");
+ assertEquals(container.volumes(), ImmutableMap.of());
}
+ public void port() {
+ // Note IP, not Ip
+ String text = "{\"IP\":\"0.0.0.0\",\"PrivatePort\":4567,\"PublicPort\":49155,\"Type\":\"tcp\"}";
+ Port port = Port.create("0.0.0.0", 4567, 49155, "tcp");
+ assertEquals(json.fromJson(text, Port.class), port);
+ assertEquals(json.toJson(port), text);
+ }
+
+ public void networkSettings() {
+ String text = "{\"IPAddress\":\"XX.XX.206.98\",\"IPPrefixLen\":27,\"Gateway\":\"XX.XX.206.105\",\"Bridge\":\"public\",\"Ports\":{}}";
+ NetworkSettings settings = NetworkSettings.create("XX.XX.206.98", 27, "XX.XX.206.105", "public", null, null);
+ assertEquals(json.fromJson(text, NetworkSettings.class), settings);
+ assertEquals(json.toJson(settings), text);
+ }
}
diff --git a/docker/src/test/java/org/jclouds/docker/features/RemoteApiLiveTest.java b/docker/src/test/java/org/jclouds/docker/features/RemoteApiLiveTest.java
index 34fedddd6..30fd171f2 100644
--- a/docker/src/test/java/org/jclouds/docker/features/RemoteApiLiveTest.java
+++ b/docker/src/test/java/org/jclouds/docker/features/RemoteApiLiveTest.java
@@ -50,7 +50,7 @@ public class RemoteApiLiveTest extends BaseDockerApiLiveTest {
@Test
public void testVersion() {
- assertEquals(api().getVersion().getVersion(), "1.0.0");
+ assertEquals(api().getVersion().version(), "1.0.0");
}
@Test(dependsOnMethods = "testVersion")
@@ -69,37 +69,37 @@ public void testListImages() {
@Test(dependsOnMethods = "testListImages")
public void testCreateContainer() throws IOException, InterruptedException {
- Config containerConfig = Config.builder().imageId(image.getId())
+ Config containerConfig = Config.builder().image(image.id())
.cmd(ImmutableList.of("/bin/sh", "-c", "while true; do echo hello world; sleep 1; done"))
.build();
container = api().createContainer("testCreateContainer", containerConfig);
assertNotNull(container);
- assertNotNull(container.getId());
+ assertNotNull(container.id());
}
@Test(dependsOnMethods = "testCreateContainer")
public void testStartContainer() throws IOException, InterruptedException {
- api().startContainer(container.getId());
- assertTrue(api().inspectContainer(container.getId()).getState().isRunning());
+ api().startContainer(container.id());
+ assertTrue(api().inspectContainer(container.id()).state().running());
}
@Test(dependsOnMethods = "testStartContainer")
public void testStopContainer() {
- api().stopContainer(container.getId());
- assertFalse(api().inspectContainer(container.getId()).getState().isRunning());
+ api().stopContainer(container.id());
+ assertFalse(api().inspectContainer(container.id()).state().running());
}
@Test(dependsOnMethods = "testStopContainer", expectedExceptions = NullPointerException.class)
public void testRemoveContainer() {
- api().removeContainer(container.getId());
- assertFalse(api().inspectContainer(container.getId()).getState().isRunning());
+ api().removeContainer(container.id());
+ assertFalse(api().inspectContainer(container.id()).state().running());
}
@Test(dependsOnMethods = "testRemoveContainer", expectedExceptions = ResourceNotFoundException.class)
public void testDeleteImage() {
- InputStream deleteImageStream = api().deleteImage(image.getId());
+ InputStream deleteImageStream = api().deleteImage(image.id());
consumeStream(deleteImageStream, false);
- assertNull(api().inspectImage(image.getId()));
+ assertNull(api().inspectImage(image.id()));
}
public void testBuildImage() throws IOException, InterruptedException, URISyntaxException {
@@ -111,7 +111,7 @@ public void testBuildImage() throws IOException, InterruptedException, URISyntax
String rawImageId = Iterables.getLast(Splitter.on("Successfully built ").split(lastStreamedLine));
String imageId = rawImageId.substring(0, 11);
Image image = api().inspectImage(imageId);
- api().deleteImage(image.getId(), DeleteImageOptions.Builder.force(true));
+ api().deleteImage(image.id(), DeleteImageOptions.Builder.force(true));
}
private RemoteApi api() {
diff --git a/docker/src/test/java/org/jclouds/docker/features/RemoteApiMockTest.java b/docker/src/test/java/org/jclouds/docker/features/RemoteApiMockTest.java
index 760f7234b..515d98ddb 100644
--- a/docker/src/test/java/org/jclouds/docker/features/RemoteApiMockTest.java
+++ b/docker/src/test/java/org/jclouds/docker/features/RemoteApiMockTest.java
@@ -108,11 +108,11 @@ public void testGetContainer() throws Exception {
Container container = remoteApi.inspectContainer(containerId);
assertRequestHasCommonFields(server.takeRequest(), "/containers/" + containerId + "/json");
assertNotNull(container);
- assertNotNull(container.getId(), containerId);
- assertNotNull(container.getContainerConfig());
- assertNotNull(container.getHostConfig());
- assertEquals(container.getName(), "/tender_lumiere");
- assertEquals(container.getState().isRunning(), true);
+ assertNotNull(container.id(), containerId);
+ assertNotNull(container.config());
+ assertNotNull(container.hostConfig());
+ assertEquals(container.name(), "/tender_lumiere");
+ assertEquals(container.state().running(), true);
} finally {
api.close();
server.shutdown();
@@ -126,7 +126,7 @@ public void testGetNonExistingContainer() throws Exception {
RemoteApi remoteApi = api.getRemoteApi();
String containerId = "notExisting";
try {
- Container container = remoteApi.inspectContainer(containerId);
+ remoteApi.inspectContainer(containerId);
assertRequestHasCommonFields(server.takeRequest(), "/containers/" + containerId + "/json");
} finally {
api.close();
@@ -145,13 +145,13 @@ public void testCreateContainer() throws Exception {
.attachStderr(true)
.attachStdout(true)
.tty(false)
- .imageId("base")
+ .image("base")
.build();
try {
Container container = remoteApi.createContainer("test", containerConfig);
assertRequestHasCommonFields(server.takeRequest(), "POST", "/containers/create?name=test");
assertNotNull(container);
- assertEquals(container.getId(), "c6c74153ae4b1d1633d68890a68d89c40aa5e284a1ea016cbc6ef0e634ee37b2");
+ assertEquals(container.id(), "c6c74153ae4b1d1633d68890a68d89c40aa5e284a1ea016cbc6ef0e634ee37b2");
} finally {
api.close();
server.shutdown();