You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by an...@apache.org on 2015/04/08 21:53:28 UTC
[1/2] jclouds-labs git commit: Add template option to specify direct
(unmapped) ports
Repository: jclouds-labs
Updated Branches:
refs/heads/1.9.x 1fc9d0d85 -> 38b09cedd
Add template option to specify direct (unmapped) ports
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/b5c69c7e
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/b5c69c7e
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/b5c69c7e
Branch: refs/heads/1.9.x
Commit: b5c69c7ef8fa011416c84b2764bed05f07325fdd
Parents: 1fc9d0d
Author: Andrew Kennedy <an...@cloudsoftcorp.com>
Authored: Mon Apr 6 16:34:51 2015 +0100
Committer: Andrea Turli <an...@gmail.com>
Committed: Wed Apr 8 21:52:47 2015 +0200
----------------------------------------------------------------------
.../compute/options/DockerTemplateOptions.java | 53 +++++++++++++-------
.../strategy/DockerComputeServiceAdapter.java | 12 +++++
2 files changed, 46 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/b5c69c7e/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 355c617..4c2035c 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
@@ -54,6 +54,7 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
protected Optional<List<String>> commands = Optional.absent();
protected Optional<Map<String, String>> volumes = Optional.absent();
protected Optional<List<String>> env = Optional.absent();
+ protected Optional<List<Integer>> directPorts = Optional.absent();
@Override
public DockerTemplateOptions clone() {
@@ -84,10 +85,13 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
}
if (cpuShares.isPresent()) {
eTo.cpuShares(cpuShares.get());
- }
+ }
if (env.isPresent()) {
eTo.env(env.get());
- }
+ }
+ if (directPorts.isPresent()) {
+ eTo.directPorts(directPorts.get());
+ }
}
}
@@ -104,12 +108,13 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
equal(this.memory, that.memory) &&
equal(this.commands, that.commands) &&
equal(this.cpuShares, that.cpuShares) &&
- equal(this.env, that.env);
+ equal(this.env, that.env) &&
+ equal(this.directPorts, that.directPorts);
}
@Override
public int hashCode() {
- return Objects.hashCode(super.hashCode(), volumes, hostname, dns, memory, commands, cpuShares, env);
+ return Objects.hashCode(super.hashCode(), volumes, hostname, dns, memory, commands, cpuShares, env, directPorts);
}
@Override
@@ -122,6 +127,7 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
.add("commands", commands)
.add("volumes", volumes)
.add("env", env)
+ .add("directPorts", directPorts)
.toString();
}
@@ -168,35 +174,36 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
return this;
}
- public Optional<Map<String, String>> getVolumes() {
- return volumes;
+ public DockerTemplateOptions directPorts(List<Integer> ports) {
+ this.directPorts = Optional.<List<Integer>> of(ImmutableList.copyOf(ports));
+ return this;
}
+ public Optional<Map<String, String>> getVolumes() { return volumes; }
+
public Optional<String> getDns() { return dns; }
public Optional<String> getHostname() { return hostname; }
public Optional<Integer> getMemory() { return memory; }
- public Optional<List<String>> getCommands() {
- return commands;
- }
+ public Optional<List<String>> getCommands() { return commands; }
public Optional<Integer> getCpuShares() { return cpuShares; }
- public Optional<List<String>> getEnv() {
- return env;
- }
+ public Optional<List<String>> getEnv() { return env; }
+
+ public Optional<List<Integer>> getDirectPorts() { return directPorts; }
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)
@@ -251,6 +258,14 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
return DockerTemplateOptions.class.cast(options.env(env));
}
+ /**
+ * @see DockerTemplateOptions#directPorts(java.util.List)
+ */
+ public static DockerTemplateOptions directPorts(List<Integer> directPorts) {
+ DockerTemplateOptions options = new DockerTemplateOptions();
+ return DockerTemplateOptions.class.cast(options.directPorts(directPorts));
+ }
+
// methods that only facilitate returning the correct object type
/**
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/b5c69c7e/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 920071b..61b5041 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
@@ -19,6 +19,8 @@ package org.jclouds.docker.compute.strategy;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.Iterables.find;
+import java.util.Arrays;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -49,7 +51,9 @@ import org.jclouds.logging.Logger;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@@ -136,6 +140,14 @@ public class DockerComputeServiceAdapter implements
.publishAllPorts(true)
.privileged(true);
+ if (templateOptions.getDirectPorts().isPresent()) {
+ Map<String, List<Map<String, String>>> portBindings = Maps.newHashMap();
+ for (Integer port : templateOptions.getDirectPorts().get()) {
+ portBindings.put(port + "/tcp", Lists.<Map<String, String>>newArrayList(ImmutableMap.of("HostPort", Integer.toString(port))));
+ }
+ hostConfigBuilder.portBindings(portBindings);
+ }
+
if (templateOptions.getDns().isPresent()) {
hostConfigBuilder.dns(templateOptions.getDns().get());
}
[2/2] jclouds-labs git commit: Updates for new Docker port mapping
option based on review comments
Posted by an...@apache.org.
Updates for new Docker port mapping option based on review comments
- Change to portBindings and Map intead of List
- Tidy up formatting for DockerTemplateOptions
- Remove superfluous checkNotNull calls
- Document the Map contents for portBindings option
- Remove unused import to fix Checkstyle
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/38b09ced
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/38b09ced
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/38b09ced
Branch: refs/heads/1.9.x
Commit: 38b09cedd439aac7686cc5d22378470520a25036
Parents: b5c69c7
Author: Andrew Kennedy <an...@cloudsoftcorp.com>
Authored: Mon Apr 6 23:30:40 2015 +0100
Committer: Andrea Turli <an...@gmail.com>
Committed: Wed Apr 8 21:52:58 2015 +0200
----------------------------------------------------------------------
.../compute/options/DockerTemplateOptions.java | 73 +++++++++++++-------
.../strategy/DockerComputeServiceAdapter.java | 11 +--
2 files changed, 54 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/38b09ced/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 4c2035c..73699d8 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
@@ -54,7 +54,7 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
protected Optional<List<String>> commands = Optional.absent();
protected Optional<Map<String, String>> volumes = Optional.absent();
protected Optional<List<String>> env = Optional.absent();
- protected Optional<List<Integer>> directPorts = Optional.absent();
+ protected Optional<Map<Integer, Integer>> portBindings = Optional.absent();
@Override
public DockerTemplateOptions clone() {
@@ -89,8 +89,8 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
if (env.isPresent()) {
eTo.env(env.get());
}
- if (directPorts.isPresent()) {
- eTo.directPorts(directPorts.get());
+ if (portBindings.isPresent()) {
+ eTo.portBindings(portBindings.get());
}
}
}
@@ -109,12 +109,12 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
equal(this.commands, that.commands) &&
equal(this.cpuShares, that.cpuShares) &&
equal(this.env, that.env) &&
- equal(this.directPorts, that.directPorts);
+ equal(this.portBindings, that.portBindings);
}
@Override
public int hashCode() {
- return Objects.hashCode(super.hashCode(), volumes, hostname, dns, memory, commands, cpuShares, env, directPorts);
+ return Objects.hashCode(super.hashCode(), volumes, hostname, dns, memory, commands, cpuShares, env, portBindings);
}
@Override
@@ -127,14 +127,14 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
.add("commands", commands)
.add("volumes", volumes)
.add("env", env)
- .add("directPorts", directPorts)
+ .add("portBindings", portBindings)
.toString();
}
public static final DockerTemplateOptions NONE = new DockerTemplateOptions();
public DockerTemplateOptions volumes(Map<String, String> volumes) {
- this.volumes = Optional.<Map<String, String>> of(ImmutableMap.copyOf(volumes));
+ this.volumes = Optional.<Map<String, String>>of(ImmutableMap.copyOf(checkNotNull(volumes, "volumes")));
return this;
}
@@ -154,13 +154,11 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
}
public TemplateOptions commands(Iterable<String> commands) {
- for (String command : checkNotNull(commands, "commands"))
- checkNotNull(command, "all commands must be non-empty");
- this.commands = Optional.<List<String>> of(ImmutableList.copyOf(commands));
+ this.commands = Optional.<List<String>>of(ImmutableList.copyOf(checkNotNull(commands, "commands")));
return this;
}
- public TemplateOptions commands(String... commands) {
+ public TemplateOptions commands(String...commands) {
return commands(ImmutableList.copyOf(checkNotNull(commands, "commands")));
}
@@ -169,13 +167,27 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
return this;
}
- public DockerTemplateOptions env(List<String> env) {
- this.env = Optional.<List<String>> of(ImmutableList.copyOf(env));
+ public DockerTemplateOptions env(Iterable<String> env) {
+ this.env = Optional.<List<String>>of(ImmutableList.copyOf(checkNotNull(env, "env")));
return this;
}
- public DockerTemplateOptions directPorts(List<Integer> ports) {
- this.directPorts = Optional.<List<Integer>> of(ImmutableList.copyOf(ports));
+ public DockerTemplateOptions env(String...env) {
+ return env(ImmutableList.copyOf(checkNotNull(env, "env")));
+ }
+
+ /**
+ * Set port bindings between the Docker host and a container.
+ * <p>
+ * The {@link Map} keys are host ports number, and the value for an entry is the
+ * container port number. This is the same order as the arguments for the
+ * {@code --publish} command-line option to {@code docker run} which is
+ * {@code hostPort:containerPort}.
+ *
+ * @param portBindings the map of host to container port bindings
+ */
+ public DockerTemplateOptions portBindings(Map<Integer, Integer> portBindings) {
+ this.portBindings = Optional.<Map<Integer, Integer>>of(ImmutableMap.copyOf(checkNotNull(portBindings, "portBindings")));
return this;
}
@@ -193,12 +205,12 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
public Optional<List<String>> getEnv() { return env; }
- public Optional<List<Integer>> getDirectPorts() { return directPorts; }
+ public Optional<Map<Integer, Integer>> getPortBindings() { return portBindings; }
public static class Builder {
/**
- * @see DockerTemplateOptions#volumes(java.util.Map)
+ * @see DockerTemplateOptions#volumes(Map)
*/
public static DockerTemplateOptions volumes(Map<String, String> volumes) {
DockerTemplateOptions options = new DockerTemplateOptions();
@@ -222,7 +234,7 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
}
/**
- * @see DockerTemplateOptions#memory
+ * @see DockerTemplateOptions#memory(int)
*/
public static DockerTemplateOptions memory(int memory) {
DockerTemplateOptions options = new DockerTemplateOptions();
@@ -230,13 +242,16 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
}
/**
- * @see DockerTemplateOptions#commands(Iterable)
+ * @see DockerTemplateOptions#commands(String[])
*/
- public static DockerTemplateOptions commands(String... commands) {
+ public static DockerTemplateOptions commands(String...commands) {
DockerTemplateOptions options = new DockerTemplateOptions();
return DockerTemplateOptions.class.cast(options.commands(commands));
}
+ /**
+ * @see DockerTemplateOptions#commands(Iterable)
+ */
public static DockerTemplateOptions commands(Iterable<String> commands) {
DockerTemplateOptions options = new DockerTemplateOptions();
return DockerTemplateOptions.class.cast(options.commands(commands));
@@ -251,19 +266,27 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
}
/**
- * @see DockerTemplateOptions#env(java.util.List)
+ * @see DockerTemplateOptions#env(String[])
+ */
+ public static DockerTemplateOptions env(String...env) {
+ DockerTemplateOptions options = new DockerTemplateOptions();
+ return DockerTemplateOptions.class.cast(options.env(env));
+ }
+
+ /**
+ * @see DockerTemplateOptions#env(Iterable)
*/
- public static DockerTemplateOptions env(List<String> env) {
+ public static DockerTemplateOptions env(Iterable<String> env) {
DockerTemplateOptions options = new DockerTemplateOptions();
return DockerTemplateOptions.class.cast(options.env(env));
}
/**
- * @see DockerTemplateOptions#directPorts(java.util.List)
+ * @see DockerTemplateOptions#portBindings(Map)
*/
- public static DockerTemplateOptions directPorts(List<Integer> directPorts) {
+ public static DockerTemplateOptions portBindings(Map<Integer, Integer> portBindings) {
DockerTemplateOptions options = new DockerTemplateOptions();
- return DockerTemplateOptions.class.cast(options.directPorts(directPorts));
+ return DockerTemplateOptions.class.cast(options.portBindings(portBindings));
}
// methods that only facilitate returning the correct object type
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/38b09ced/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 61b5041..6da2bc0 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
@@ -19,7 +19,6 @@ package org.jclouds.docker.compute.strategy;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.Iterables.find;
-import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -140,10 +139,11 @@ public class DockerComputeServiceAdapter implements
.publishAllPorts(true)
.privileged(true);
- if (templateOptions.getDirectPorts().isPresent()) {
+ if (templateOptions.getPortBindings().isPresent()) {
Map<String, List<Map<String, String>>> portBindings = Maps.newHashMap();
- for (Integer port : templateOptions.getDirectPorts().get()) {
- portBindings.put(port + "/tcp", Lists.<Map<String, String>>newArrayList(ImmutableMap.of("HostPort", Integer.toString(port))));
+ for (Map.Entry<Integer, Integer> entry : templateOptions.getPortBindings().get().entrySet()) {
+ portBindings.put(entry.getValue() + "/tcp",
+ Lists.<Map<String, String>>newArrayList(ImmutableMap.of("HostPort", Integer.toString(entry.getKey()))));
}
hostConfigBuilder.portBindings(portBindings);
}
@@ -151,12 +151,13 @@ public class DockerComputeServiceAdapter implements
if (templateOptions.getDns().isPresent()) {
hostConfigBuilder.dns(templateOptions.getDns().get());
}
- // set up for volume bindings
+
if (templateOptions.getVolumes().isPresent()) {
for (Map.Entry<String, String> entry : templateOptions.getVolumes().get().entrySet()) {
hostConfigBuilder.binds(ImmutableList.of(entry.getKey() + ":" + entry.getValue()));
}
}
+
HostConfig hostConfig = hostConfigBuilder.build();
api.getContainerApi().startContainer(container.id(), hostConfig);