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 12:17:14 UTC

jclouds-labs git commit: JCLOUDS-996 fix location of NetworkMode parameter from Docker Remote API and make it configurable from DockerTemplateOptions

Repository: jclouds-labs
Updated Branches:
  refs/heads/master 8b11430ac -> af0dd741f


JCLOUDS-996 fix location of NetworkMode parameter from Docker Remote API and make it configurable from DockerTemplateOptions


Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/af0dd741
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/af0dd741
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/af0dd741

Branch: refs/heads/master
Commit: af0dd741f44c6928eb2e50cd5c1f1574ce9c2859
Parents: 8b11430
Author: Josef Cacek <jo...@gmail.com>
Authored: Thu Sep 17 08:18:52 2015 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Thu Sep 17 12:01:34 2015 +0200

----------------------------------------------------------------------
 .../compute/options/DockerTemplateOptions.java  | 23 ++++++++++++++++++++
 .../strategy/DockerComputeServiceAdapter.java   |  2 ++
 .../java/org/jclouds/docker/domain/Config.java  | 19 +++++-----------
 .../org/jclouds/docker/domain/HostConfig.java   | 20 ++++++++++++-----
 .../options/DockerTemplateOptionsTest.java      | 11 +++++++++-
 .../docker/parse/ContainerParseTest.java        |  1 +
 6 files changed, 56 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/af0dd741/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 efe0171..aac6fac 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
@@ -58,6 +58,7 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
    protected Map<String, String> volumes = ImmutableMap.of();
    protected List<String> env = ImmutableList.of();
    protected Map<Integer, Integer> portBindings = ImmutableMap.of();
+   protected String networkMode;
 
    @Override
    public DockerTemplateOptions clone() {
@@ -89,6 +90,7 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
          if (!portBindings.isEmpty()) {
             eTo.portBindings(portBindings);
          }
+         eTo.networkMode(networkMode);
       }
    }
 
@@ -190,6 +192,17 @@ 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
+    * @return this instance
+    */
+   public DockerTemplateOptions networkMode(@Nullable String networkMode) {
+      this.networkMode = networkMode;
+      return this;
+   }
+
    public Map<String, String> getVolumes() { return volumes; }
 
    public List<String> getDns() { return dns; }
@@ -206,6 +219,8 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
 
    public Map<Integer, Integer> getPortBindings() { return portBindings; }
 
+   public String getNetworkMode() { return networkMode; }
+
    public static class Builder {
 
       /**
@@ -297,6 +312,14 @@ public class DockerTemplateOptions extends TemplateOptions implements Cloneable
       }
 
       /**
+       * @see DockerTemplateOptions#hostname(String)
+       */
+      public static DockerTemplateOptions networkMode(@Nullable String networkMode) {
+         DockerTemplateOptions options = new DockerTemplateOptions();
+         return options.networkMode(networkMode);
+      }
+
+      /**
        * @see TemplateOptions#inboundPorts(int...)
        */
       public static DockerTemplateOptions inboundPorts(int... ports) {

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/af0dd741/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 0aa93cf..44242c6 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
@@ -148,6 +148,8 @@ public class DockerComputeServiceAdapter implements
          }
       }
 
+      hostConfigBuilder.networkMode(templateOptions.getNetworkMode());
+
       HostConfig hostConfig = hostConfigBuilder.build();
 
       api.getContainerApi().startContainer(container.id(), hostConfig);

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/af0dd741/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 464f562..b16f4b5 100644
--- a/docker/src/main/java/org/jclouds/docker/domain/Config.java
+++ b/docker/src/main/java/org/jclouds/docker/domain/Config.java
@@ -99,8 +99,6 @@ public abstract class Config {
 
    public abstract Map<String, String> restartPolicy();
 
-   @Nullable public abstract String networkMode();
-
    Config() {
    }
 
@@ -110,7 +108,7 @@ public abstract class Config {
                  "AttachStderr", "Tty", "OpenStdin", "StdinOnce", "Env", "Cmd", "Entrypoint", "Image", "Volumes",
                  "WorkingDir", "NetworkDisabled", "ExposedPorts", "SecurityOpts", "HostConfig", "Binds", "Links",
                  "LxcConf", "PortBindings", "PublishAllPorts", "Privileged", "Dns", "DnsSearch", "VolumesFrom",
-                 "CapAdd", "CapDrop", "RestartPolicy", "NetworkMode"
+                 "CapAdd", "CapDrop", "RestartPolicy"
          })
    public static Config create(String hostname, String domainname, String user, int memory, int memorySwap,
          int cpuShares, boolean attachStdin, boolean attachStdout, boolean attachStderr, boolean tty,
@@ -119,12 +117,12 @@ public abstract class Config {
          Map<String, ?> exposedPorts, List<String> securityOpts, HostConfig hostConfig, List<String> binds,
          List<String> links, List<Map<String, String>> lxcConf, Map<String, List<Map<String, String>>> portBindings,
          boolean publishAllPorts, boolean privileged, List<String> dns, String dnsSearch, String volumesFrom,
-         List<String> capAdd, List<String> capDrop, Map<String, String> restartPolicy, String networkMode) {
+         List<String> capAdd, List<String> capDrop, Map<String, String> restartPolicy) {
       return new AutoValue_Config(hostname, domainname, user, memory, memorySwap, cpuShares, attachStdin,
               attachStdout, attachStderr, tty, openStdin, stdinOnce, copyOf(env), copyOf(cmd), copyOf(entrypoint),
               image, copyOf(volumes), workingDir, networkDisabled, copyOf(exposedPorts), copyOf(securityOpts), hostConfig,
               copyOf(binds), copyOf(links), copyOf(lxcConf), copyOf(portBindings), publishAllPorts, privileged,
-              copyOf(dns), dnsSearch, volumesFrom, copyOf(capAdd), copyOf(capDrop), copyOf(restartPolicy), networkMode);
+              copyOf(dns), dnsSearch, volumesFrom, copyOf(capAdd), copyOf(capDrop), copyOf(restartPolicy));
    }
 
    public static Builder builder() {
@@ -170,7 +168,6 @@ public abstract class Config {
       private List<String> capAdd = Lists.newArrayList();
       private List<String> capDrop = Lists.newArrayList();
       private Map<String, String> restartPolicy = Maps.newHashMap();
-      private String networkMode;
 
       public Builder hostname(String hostname) {
          this.hostname = hostname;
@@ -348,17 +345,11 @@ public abstract class Config {
          return this;
       }
 
-      public Builder networkMode(String networkMode) {
-         this.networkMode = networkMode;
-         return this;
-      }
-
       public Config build() {
          return Config.create(hostname, domainname, user, memory, memorySwap, cpuShares, attachStdin, attachStdout,
                  attachStderr, tty, openStdin, stdinOnce, env, cmd, entrypoint, image, volumes, workingDir,
                  networkDisabled, exposedPorts, securityOpts, hostConfig, binds, links, lxcConf, portBindings,
-                 publishAllPorts, privileged, dns, dnsSearch, volumesFrom, capAdd, capDrop, restartPolicy,
-                 networkMode);
+                 publishAllPorts, privileged, dns, dnsSearch, volumesFrom, capAdd, capDrop, restartPolicy);
       }
 
       public Builder fromConfig(Config in) {
@@ -370,7 +361,7 @@ public abstract class Config {
                  .hostConfig(in.hostConfig()).binds(in.binds()).links(in.links()).lxcConf(in.lxcConf())
                  .portBindings(in.portBindings()).publishAllPorts(in.publishAllPorts()).privileged(in.privileged())
                  .dns(in.dns()).dnsSearch(in.dnsSearch()).volumesFrom(in.volumesFrom()).capAdd(in.capAdd())
-                 .capDrop(in.capDrop()).restartPolicy(in.restartPolicy()).networkMode(in.networkMode());
+                 .capDrop(in.capDrop()).restartPolicy(in.restartPolicy());
       }
 
    }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/af0dd741/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 8922d18..f2c1e87 100644
--- a/docker/src/main/java/org/jclouds/docker/domain/HostConfig.java
+++ b/docker/src/main/java/org/jclouds/docker/domain/HostConfig.java
@@ -51,16 +51,19 @@ public abstract class HostConfig {
 
    public abstract List<String> volumesFrom();
 
+   @Nullable
+   public abstract String networkMode();
+
    HostConfig() {
    }
 
    @SerializedNames({ "ContainerIDFile", "Binds", "LxcConf", "Privileged", "Dns", "DnsSearch", "PortBindings",
-           "Links", "PublishAllPorts", "VolumesFrom" })
+         "Links", "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) {
+         List<String> links, 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));
+            copyOf(portBindings), copyOf(links), publishAllPorts, copyOf(volumesFrom), networkMode);
    }
 
    public static Builder builder() {
@@ -83,6 +86,7 @@ public abstract class HostConfig {
       private List<String> links = Lists.newArrayList();
       private boolean publishAllPorts;
       private List<String> volumesFrom = Lists.newArrayList();
+      private String networkMode;
 
       public Builder containerIDFile(String containerIDFile) {
          this.containerIDFile = containerIDFile;
@@ -134,15 +138,21 @@ public abstract class HostConfig {
          return this;
       }
 
+      public Builder networkMode(String networkMode) {
+         this.networkMode = networkMode;
+         return this;
+      }
+
       public HostConfig build() {
          return HostConfig.create(containerIDFile, binds, lxcConf, privileged, dns, dnsSearch, portBindings, links,
-               publishAllPorts, volumesFrom);
+               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());
+               .portBindings(in.portBindings()).publishAllPorts(in.publishAllPorts()).volumesFrom(in.volumesFrom())
+               .networkMode(in.networkMode());
       }
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/af0dd741/docker/src/test/java/org/jclouds/docker/compute/options/DockerTemplateOptionsTest.java
----------------------------------------------------------------------
diff --git a/docker/src/test/java/org/jclouds/docker/compute/options/DockerTemplateOptionsTest.java b/docker/src/test/java/org/jclouds/docker/compute/options/DockerTemplateOptionsTest.java
index 7badb92..d20019a 100644
--- a/docker/src/test/java/org/jclouds/docker/compute/options/DockerTemplateOptionsTest.java
+++ b/docker/src/test/java/org/jclouds/docker/compute/options/DockerTemplateOptionsTest.java
@@ -78,6 +78,13 @@ public class DockerTemplateOptionsTest {
       assertEquals(options.as(DockerTemplateOptions.class).getPortBindings(), ImmutableMap.<Integer, Integer>builder().put(8443,  443).put(8080, 80).build());
    }
 
+
+   @Test
+   public void testNetworkMode() {
+      TemplateOptions options = DockerTemplateOptions.Builder.networkMode("host");
+      assertEquals(options.as(DockerTemplateOptions.class).getNetworkMode(), "host");
+   }
+
    @Test
    public void testNonDockerOptions() {
       TemplateOptions options = DockerTemplateOptions.Builder.userMetadata(ImmutableMap.of("key", "value")).cpuShares(1);
@@ -100,7 +107,9 @@ public class DockerTemplateOptionsTest {
             .commands("test")
             .portBindings(
                   ImmutableMap.<Integer, Integer> builder()
-                        .put(8443, 443).build()).hostname("hostname")
+                        .put(8443, 443).build())
+            .hostname("hostname")
+            .networkMode("host")
             .userMetadata(ImmutableMap.of("key", "value"))
             .env(ImmutableList.of("HOST=abc", "PORT=1234"))
             .dns("8.8.8.8", "8.8.4.4")

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/af0dd741/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 96354e1..bcbe44b 100644
--- a/docker/src/test/java/org/jclouds/docker/parse/ContainerParseTest.java
+++ b/docker/src/test/java/org/jclouds/docker/parse/ContainerParseTest.java
@@ -84,6 +84,7 @@ public class ContainerParseTest extends BaseDockerParseTest<Container> {
                       )
                       .dns(ImmutableList.of("8.8.8.8", "8.8.4.4"))
                       .privileged(true)
+                      .networkMode("bridge")
                       .build())
               .driver("aufs")
               .execDriver("native-0.2")