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/0f0d09a4 Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/0f0d09a4 Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/0f0d09a4 Branch: refs/heads/1.8.x Commit: 0f0d09a4d17ca50ece3e180bb1c66e3b9a088b08 Parents: d9f5212 Author: Andrew Kennedy <[email protected]> Authored: Sat Oct 11 17:01:32 2014 +0100 Committer: Adrian Cole <[email protected]> Committed: Tue Oct 28 08:19:49 2014 -0700 ---------------------------------------------------------------------- .../compute/options/DockerTemplateOptions.java | 45 +++++++++++++++----- .../strategy/DockerComputeServiceAdapter.java | 4 ++ .../java/org/jclouds/docker/domain/Config.java | 15 ++++--- 3 files changed, 46 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/0f0d09a4/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 5e4669b..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 @@ -53,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() { @@ -82,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()); + } } } @@ -99,12 +103,13 @@ 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 @@ -116,6 +121,7 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable .add("cpuShares", cpuShares) .add("commands", commands) .add("volumes", volumes) + .add("env", env) .toString(); } @@ -157,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; } @@ -173,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) @@ -228,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/0f0d09a4/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/0f0d09a4/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;
