Add environment config option for Docker containers
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/a543b8d5 Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/a543b8d5 Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/a543b8d5 Branch: refs/heads/master Commit: a543b8d58e57b060116186006ba5c939e9bc93a0 Parents: 911d5c5 Author: Andrew Kennedy <[email protected]> Authored: Sat Oct 11 17:01:32 2014 +0100 Committer: Andrew Kennedy <[email protected]> Committed: Sat Oct 11 18:18:11 2014 +0100 ---------------------------------------------------------------------- .../compute/options/DockerTemplateOptions.java | 48 ++++++++++++++------ .../strategy/DockerComputeServiceAdapter.java | 4 ++ .../java/org/jclouds/docker/domain/Config.java | 15 +++--- 3 files changed, 47 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a543b8d5/docker/src/main/java/org/jclouds/docker/compute/options/DockerTemplateOptions.java ---------------------------------------------------------------------- diff --git a/docker/src/main/java/org/jclouds/docker/compute/options/DockerTemplateOptions.java b/docker/src/main/java/org/jclouds/docker/compute/options/DockerTemplateOptions.java index 36029da..9568f33 100644 --- a/docker/src/main/java/org/jclouds/docker/compute/options/DockerTemplateOptions.java +++ b/docker/src/main/java/org/jclouds/docker/compute/options/DockerTemplateOptions.java @@ -16,7 +16,6 @@ */ package org.jclouds.docker.compute.options; -import com.google.common.base.MoreObjects; import com.google.common.base.Objects; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; @@ -54,6 +53,7 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable protected Optional<Integer> cpuShares = Optional.absent(); protected Optional<List<String>> commands = Optional.absent(); protected Optional<Map<String, String>> volumes = Optional.absent(); + protected Optional<List<String>> env = Optional.absent(); @Override public DockerTemplateOptions clone() { @@ -83,8 +83,11 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable eTo.commands(commands.get()); } if (cpuShares.isPresent()) { - eTo.cpuShares(cpuShares.get()); - } + eTo.cpuShares(cpuShares.get()); + } + if (env.isPresent()) { + eTo.env(env.get()); + } } } @@ -100,23 +103,25 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable equal(this.dns, that.dns) && equal(this.memory, that.memory) && equal(this.commands, that.commands) && - equal(this.cpuShares, that.cpuShares); + equal(this.cpuShares, that.cpuShares) && + equal(this.env, that.env); } @Override public int hashCode() { - return Objects.hashCode(super.hashCode(), volumes, hostname, dns, memory, commands, cpuShares); + return Objects.hashCode(super.hashCode(), volumes, hostname, dns, memory, commands, cpuShares, env); } @Override public String toString() { - return MoreObjects.toStringHelper(this) + return Objects.toStringHelper(this) .add("dns", dns) .add("hostname", hostname) .add("memory", memory) .add("cpuShares", cpuShares) .add("commands", commands) .add("volumes", volumes) + .add("env", env) .toString(); } @@ -158,6 +163,11 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable return this; } + public DockerTemplateOptions env(List<String> env) { + this.env = Optional.<List<String>> of(ImmutableList.copyOf(env)); + return this; + } + public Optional<Map<String, String>> getVolumes() { return volumes; } @@ -174,15 +184,19 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable public Optional<Integer> getCpuShares() { return cpuShares; } + public Optional<List<String>> getEnv() { + return env; + } + public static class Builder { - /** - * @see DockerTemplateOptions#volumes(java.util.Map) - */ - public static DockerTemplateOptions volumes(Map<String, String> volumes) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.volumes(volumes)); - } + /** + * @see DockerTemplateOptions#volumes(java.util.Map) + */ + public static DockerTemplateOptions volumes(Map<String, String> volumes) { + DockerTemplateOptions options = new DockerTemplateOptions(); + return DockerTemplateOptions.class.cast(options.volumes(volumes)); + } /** * @see DockerTemplateOptions#dns(String) @@ -229,6 +243,14 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable return DockerTemplateOptions.class.cast(options.cpuShares(cpuShares)); } + /** + * @see DockerTemplateOptions#env(java.util.List) + */ + public static DockerTemplateOptions env(List<String> env) { + DockerTemplateOptions options = new DockerTemplateOptions(); + return DockerTemplateOptions.class.cast(options.env(env)); + } + // methods that only facilitate returning the correct object type /** http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a543b8d5/docker/src/main/java/org/jclouds/docker/compute/strategy/DockerComputeServiceAdapter.java ---------------------------------------------------------------------- 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 a4bcd3a..d1c1260 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 @@ -108,6 +108,10 @@ public class DockerComputeServiceAdapter implements containerConfigBuilder.cpuShares(templateOptions.getCpuShares().get()); } + if (templateOptions.getEnv().isPresent()) { + containerConfigBuilder.env(templateOptions.getEnv().get()); + } + if (templateOptions.getVolumes().isPresent()) { Map<String, Object> volumes = Maps.newLinkedHashMap(); for (String containerDir : templateOptions.getVolumes().get().values()) { http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a543b8d5/docker/src/main/java/org/jclouds/docker/domain/Config.java ---------------------------------------------------------------------- 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 5dd2b77..f5190fa 100644 --- a/docker/src/main/java/org/jclouds/docker/domain/Config.java +++ b/docker/src/main/java/org/jclouds/docker/domain/Config.java @@ -16,17 +16,18 @@ */ 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 com.google.common.base.Preconditions.checkNotNull; import java.beans.ConstructorProperties; import java.util.List; import java.util.Map; -import static com.google.common.base.Preconditions.checkNotNull; +import org.jclouds.javax.annotation.Nullable; + +import com.google.common.base.Objects; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.gson.annotations.SerializedName; public class Config { @@ -291,10 +292,10 @@ public class Config { private boolean attachStdout; private boolean attachStderr; private Map<String, ?> exposedPorts = ImmutableMap.of(); + private List<String> env = ImmutableList.of(); private boolean tty; private boolean openStdin; private boolean stdinOnce; - private List<String> env = ImmutableList.of(); private List<String> cmd = ImmutableList.of(); private List<String> dns = ImmutableList.of(); private String imageId;
