Support arbitrary parameters in docker containerizer

Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/3f7a9cd9
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/3f7a9cd9
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/3f7a9cd9

Branch: refs/heads/master
Commit: 3f7a9cd909a86e40e2484ab3e8ba0d22a49a39c6
Parents: 4cec114
Author: Timothy Chen <[email protected]>
Authored: Mon Sep 22 15:04:00 2014 -0700
Committer: Timothy Chen <[email protected]>
Committed: Fri Oct 31 17:04:21 2014 -0700

----------------------------------------------------------------------
 include/mesos/mesos.proto | 7 +++++++
 src/docker/docker.cpp     | 5 +++++
 2 files changed, 12 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/3f7a9cd9/include/mesos/mesos.proto
----------------------------------------------------------------------
diff --git a/include/mesos/mesos.proto b/include/mesos/mesos.proto
index 1d4f673..572c74c 100644
--- a/include/mesos/mesos.proto
+++ b/include/mesos/mesos.proto
@@ -869,6 +869,7 @@ message ContainerInfo {
     enum Network {
       HOST = 1;
       BRIDGE = 2;
+      NONE = 3;
     }
 
     optional Network network = 2 [default = HOST];
@@ -883,6 +884,12 @@ message ContainerInfo {
     repeated PortMapping port_mappings = 3;
 
     optional bool privileged = 4 [default = false];
+
+    // Allowing arbitrary parameters to be passed to docker cli.
+    // Note that anything passed to this field is not guranteed
+    // to be supported moving forward, as we might move away from
+    // the docker cli.
+    repeated Parameter parameters = 5;
   }
 
   required Type type = 1;

http://git-wip-us.apache.org/repos/asf/mesos/blob/3f7a9cd9/src/docker/docker.cpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.cpp b/src/docker/docker.cpp
index 81d538a..5b3a4de 100644
--- a/src/docker/docker.cpp
+++ b/src/docker/docker.cpp
@@ -361,12 +361,17 @@ Future<Nothing> Docker::run(
   switch (dockerInfo.network()) {
     case ContainerInfo::DockerInfo::HOST: network = "host"; break;
     case ContainerInfo::DockerInfo::BRIDGE: network = "bridge"; break;
+    case ContainerInfo::DockerInfo::NONE: network = "none"; break;
     default: return Failure("Unsupported Network mode: " +
                             stringify(dockerInfo.network()));
   }
 
   argv.push_back(network);
 
+  foreach (const Parameter& parameter, dockerInfo.parameters()) {
+    argv.push_back("--" + parameter.key() + "=" + parameter.value());
+  }
+
   if (dockerInfo.port_mappings().size() > 0) {
     if (network != "bridge") {
       return Failure("Port mappings are only supported for bridge network");

Reply via email to