You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2015/09/17 15:08:09 UTC
jclouds-labs git commit: Added ExtraHosts option to template
Repository: jclouds-labs
Updated Branches:
refs/heads/1.9.x 7afb94410 -> e5b2b7081
Added ExtraHosts option to template
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/e5b2b708
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/e5b2b708
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/e5b2b708
Branch: refs/heads/1.9.x
Commit: e5b2b7081acffff782dd4f0ddc4f3537b8d3239d
Parents: 7afb944
Author: Andrew Kennedy <an...@cloudsoftcorp.com>
Authored: Thu Sep 17 13:06:37 2015 +0100
Committer: Ignasi Barrera <na...@apache.org>
Committed: Thu Sep 17 14:53:09 2015 +0200
----------------------------------------------------------------------
.../compute/options/DockerTemplateOptions.java | 37 +++++++++++++++++---
.../strategy/DockerComputeServiceAdapter.java | 8 +++++
.../org/jclouds/docker/domain/HostConfig.java | 20 +++++++----
.../docker/parse/ContainerParseTest.java | 1 +
docker/src/test/resources/container.json | 2 +-
5 files changed, 57 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e5b2b708/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 aac6fac..cce2b22 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
@@ -59,6 +59,7 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
protected List<String> env = ImmutableList.of();
protected Map<Integer, Integer> portBindings = ImmutableMap.of();
protected String networkMode;
+ protected Map<String, String> extraHosts = ImmutableMap.of();
@Override
public DockerTemplateOptions clone() {
@@ -91,6 +92,9 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
eTo.portBindings(portBindings);
}
eTo.networkMode(networkMode);
+ if (!extraHosts.isEmpty()) {
+ eTo.extraHosts(extraHosts);
+ }
}
}
@@ -108,12 +112,13 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
equal(this.commands, that.commands) &&
equal(this.cpuShares, that.cpuShares) &&
equal(this.env, that.env) &&
- equal(this.portBindings, that.portBindings);
+ equal(this.portBindings, that.portBindings) &&
+ equal(this.extraHosts, that.extraHosts);
}
@Override
public int hashCode() {
- return Objects.hashCode(super.hashCode(), volumes, hostname, dns, memory, commands, cpuShares, env, portBindings);
+ return Objects.hashCode(super.hashCode(), volumes, hostname, dns, memory, commands, cpuShares, env, portBindings, extraHosts);
}
@Override
@@ -127,6 +132,7 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
.add("volumes", volumes)
.add("env", env)
.add("portBindings", portBindings)
+ .add("extraHosts", extraHosts)
.toString();
}
@@ -192,7 +198,6 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
return this;
}
-
/**
* Sets the networking mode for the container. Supported values are: bridge, host, and container:[name|id]
* @param networkMode
@@ -203,6 +208,20 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
return this;
}
+ /**
+ * Set extra hosts file entries for a container.
+ * <p>
+ * The {@link Map} keys are host names, and the value is an IP address that
+ * can be accessed by the container. This is the same order as the arguments for the
+ * {@code --add-host} command-line option to {@code docker run}.
+ *
+ * @param extraHosts the map of host names to IP addresses
+ */
+ public DockerTemplateOptions extraHosts(Map<String, String> extraHosts) {
+ this.extraHosts = ImmutableMap.copyOf(checkNotNull(extraHosts, "extraHosts"));
+ return this;
+ }
+
public Map<String, String> getVolumes() { return volumes; }
public List<String> getDns() { return dns; }
@@ -221,6 +240,8 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
public String getNetworkMode() { return networkMode; }
+ public Map<String, String> getExtraHosts() { return extraHosts; }
+
public static class Builder {
/**
@@ -312,7 +333,7 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
}
/**
- * @see DockerTemplateOptions#hostname(String)
+ * @see DockerTemplateOptions#networkMode(String)
*/
public static DockerTemplateOptions networkMode(@Nullable String networkMode) {
DockerTemplateOptions options = new DockerTemplateOptions();
@@ -320,6 +341,14 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
}
/**
+ * @see DockerTemplateOptions#extraHosts(Map)
+ */
+ public static DockerTemplateOptions extraHosts(Map<String, String> extraHosts) {
+ DockerTemplateOptions options = new DockerTemplateOptions();
+ return options.extraHosts(extraHosts);
+ }
+
+ /**
* @see TemplateOptions#inboundPorts(int...)
*/
public static DockerTemplateOptions inboundPorts(int... ports) {
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e5b2b708/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 44242c6..62ea752 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
@@ -142,6 +142,14 @@ public class DockerComputeServiceAdapter implements
hostConfigBuilder.dns(templateOptions.getDns());
}
+ if (!templateOptions.getExtraHosts().isEmpty()) {
+ List<String> extraHosts = Lists.newArrayList();
+ for (Map.Entry<String, String> entry : templateOptions.getExtraHosts().entrySet()) {
+ extraHosts.add(entry.getKey() + ":" + entry.getValue());
+ }
+ hostConfigBuilder.extraHosts(extraHosts);
+ }
+
if (!templateOptions.getVolumes().isEmpty()) {
for (Map.Entry<String, String> entry : templateOptions.getVolumes().entrySet()) {
hostConfigBuilder.binds(ImmutableList.of(entry.getKey() + ":" + entry.getValue()));
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e5b2b708/docker/src/main/java/org/jclouds/docker/domain/HostConfig.java
----------------------------------------------------------------------
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 f2c1e87..17a4f38 100644
--- a/docker/src/main/java/org/jclouds/docker/domain/HostConfig.java
+++ b/docker/src/main/java/org/jclouds/docker/domain/HostConfig.java
@@ -47,6 +47,8 @@ public abstract class HostConfig {
public abstract List<String> links();
+ public abstract List<String> extraHosts();
+
public abstract boolean publishAllPorts();
public abstract List<String> volumesFrom();
@@ -58,12 +60,12 @@ public abstract class HostConfig {
}
@SerializedNames({ "ContainerIDFile", "Binds", "LxcConf", "Privileged", "Dns", "DnsSearch", "PortBindings",
- "Links", "PublishAllPorts", "VolumesFrom", "NetworkMode" })
+ "Links", "ExtraHosts", "PublishAllPorts", "VolumesFrom", "NetworkMode" })
public static HostConfig create(String containerIDFile, List<String> binds, List<Map<String, String>> lxcConf,
boolean privileged, List<String> dns, String dnsSearch, Map<String, List<Map<String, String>>> portBindings,
- List<String> links, boolean publishAllPorts, List<String> volumesFrom, String networkMode) {
+ List<String> links, List<String> extraHosts, boolean publishAllPorts, List<String> volumesFrom, String networkMode) {
return new AutoValue_HostConfig(containerIDFile, copyOf(binds), copyOf(lxcConf), privileged, copyOf(dns), dnsSearch,
- copyOf(portBindings), copyOf(links), publishAllPorts, copyOf(volumesFrom), networkMode);
+ copyOf(portBindings), copyOf(links), copyOf(extraHosts), publishAllPorts, copyOf(volumesFrom), networkMode);
}
public static Builder builder() {
@@ -84,6 +86,7 @@ public abstract class HostConfig {
private String dnsSearch;
private Map<String, List<Map<String, String>>> portBindings = Maps.newLinkedHashMap();
private List<String> links = Lists.newArrayList();
+ private List<String> extraHosts = Lists.newArrayList();
private boolean publishAllPorts;
private List<String> volumesFrom = Lists.newArrayList();
private String networkMode;
@@ -123,6 +126,11 @@ public abstract class HostConfig {
return this;
}
+ public Builder extraHosts(List<String> extraHosts) {
+ this.extraHosts.addAll(checkNotNull(extraHosts, "extraHosts"));
+ return this;
+ }
+
public Builder portBindings(Map<String, List<Map<String, String>>> portBindings) {
this.portBindings.putAll(portBindings);
return this;
@@ -145,14 +153,14 @@ public abstract class HostConfig {
public HostConfig build() {
return HostConfig.create(containerIDFile, binds, lxcConf, privileged, dns, dnsSearch, portBindings, links,
- publishAllPorts, volumesFrom, networkMode);
+ extraHosts, publishAllPorts, volumesFrom, networkMode);
}
public Builder fromHostConfig(HostConfig in) {
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())
- .networkMode(in.networkMode());
+ .extraHosts(in.extraHosts()).portBindings(in.portBindings()).publishAllPorts(in.publishAllPorts())
+ .volumesFrom(in.volumesFrom()).networkMode(in.networkMode());
}
}
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e5b2b708/docker/src/test/java/org/jclouds/docker/parse/ContainerParseTest.java
----------------------------------------------------------------------
diff --git a/docker/src/test/java/org/jclouds/docker/parse/ContainerParseTest.java b/docker/src/test/java/org/jclouds/docker/parse/ContainerParseTest.java
index bcbe44b..ff2e2fe 100644
--- a/docker/src/test/java/org/jclouds/docker/parse/ContainerParseTest.java
+++ b/docker/src/test/java/org/jclouds/docker/parse/ContainerParseTest.java
@@ -83,6 +83,7 @@ public class ContainerParseTest extends BaseDockerParseTest<Container> {
"6783/udp", ImmutableList.<Map<String, String>>of(ImmutableMap.of("HostIp", "", "HostPort", "6783")))
)
.dns(ImmutableList.of("8.8.8.8", "8.8.4.4"))
+ .extraHosts(ImmutableList.<String>of("extra:169.254.0.1"))
.privileged(true)
.networkMode("bridge")
.build())
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/e5b2b708/docker/src/test/resources/container.json
----------------------------------------------------------------------
diff --git a/docker/src/test/resources/container.json b/docker/src/test/resources/container.json
index 0b85764..5a13e13 100644
--- a/docker/src/test/resources/container.json
+++ b/docker/src/test/resources/container.json
@@ -58,7 +58,7 @@
"Devices": [],
"Dns": [ "8.8.8.8", "8.8.4.4" ],
"DnsSearch": null,
- "ExtraHosts": null,
+ "ExtraHosts": [ "extra:169.254.0.1" ],
"Links": null,
"LxcConf": [],
"NetworkMode": "bridge",