Passed default container DNS info to Docker executor.

Review: https://reviews.apache.org/r/60557


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

Branch: refs/heads/master
Commit: 48b5ef036905ae5a112af26ab6985953f8179c8c
Parents: ebfccf4
Author: Qian Zhang <zhq527...@gmail.com>
Authored: Wed Jun 28 22:26:02 2017 +0800
Committer: Qian Zhang <zhq527...@gmail.com>
Committed: Thu Aug 3 13:53:26 2017 +0800

----------------------------------------------------------------------
 src/docker/executor.cpp            | 21 +++++++++++++++++++++
 src/docker/executor.hpp            |  5 +++++
 src/slave/containerizer/docker.cpp |  6 ++++++
 3 files changed, 32 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/48b5ef03/src/docker/executor.cpp
----------------------------------------------------------------------
diff --git a/src/docker/executor.cpp b/src/docker/executor.cpp
index e03f244..a14ac7d 100644
--- a/src/docker/executor.cpp
+++ b/src/docker/executor.cpp
@@ -50,6 +50,7 @@
 #include "logging/flags.hpp"
 #include "logging/logging.hpp"
 
+#include "messages/flags.hpp"
 #include "messages/messages.hpp"
 
 #include "slave/constants.hpp"
@@ -87,6 +88,7 @@ public:
       const Duration& shutdownGracePeriod,
       const string& launcherDir,
       const map<string, string>& taskEnvironment,
+      const Option<ContainerDNSInfo>& defaultContainerDNS,
       bool cgroupsEnableCfs)
     : ProcessBase(ID::generate("docker-executor")),
       killed(false),
@@ -99,6 +101,7 @@ public:
       mappedDirectory(mappedDirectory),
       shutdownGracePeriod(shutdownGracePeriod),
       taskEnvironment(taskEnvironment),
+      defaultContainerDNS(defaultContainerDNS),
       cgroupsEnableCfs(cgroupsEnableCfs),
       stop(Nothing()),
       inspect(Nothing()) {}
@@ -605,6 +608,7 @@ private:
   string mappedDirectory;
   Duration shutdownGracePeriod;
   map<string, string> taskEnvironment;
+  Option<ContainerDNSInfo> defaultContainerDNS;
   bool cgroupsEnableCfs;
 
   Option<KillPolicy> killPolicy;
@@ -631,6 +635,7 @@ public:
       const Duration& shutdownGracePeriod,
       const string& launcherDir,
       const map<string, string>& taskEnvironment,
+      const Option<ContainerDNSInfo>& defaultContainerDNS,
       bool cgroupsEnableCfs)
   {
     process = Owned<DockerExecutorProcess>(new DockerExecutorProcess(
@@ -641,6 +646,7 @@ public:
         shutdownGracePeriod,
         launcherDir,
         taskEnvironment,
+        defaultContainerDNS,
         cgroupsEnableCfs));
 
     spawn(process.get());
@@ -793,6 +799,20 @@ int main(int argc, char** argv)
     }
   }
 
+  Option<mesos::internal::ContainerDNSInfo> defaultContainerDNS;
+  if (flags.default_container_dns.isSome()) {
+    Try<mesos::internal::ContainerDNSInfo> parse =
+      flags::parse<mesos::internal::ContainerDNSInfo>(
+          flags.default_container_dns.get());
+
+    if (parse.isError()) {
+      EXIT(EXIT_FAILURE) << flags.usage(
+          "Failed to parse --default_container_dns: " + parse.error());
+    }
+
+    defaultContainerDNS = parse.get();
+  }
+
   // Get executor shutdown grace period from the environment.
   //
   // NOTE: We avoided introducing a docker executor flag for this
@@ -847,6 +867,7 @@ int main(int argc, char** argv)
           shutdownGracePeriod,
           flags.launcher_dir.get(),
           taskEnvironment,
+          defaultContainerDNS,
           flags.cgroups_enable_cfs));
 
   Owned<mesos::MesosExecutorDriver> driver(

http://git-wip-us.apache.org/repos/asf/mesos/blob/48b5ef03/src/docker/executor.hpp
----------------------------------------------------------------------
diff --git a/src/docker/executor.hpp b/src/docker/executor.hpp
index a4a8ec9..f21e84c 100644
--- a/src/docker/executor.hpp
+++ b/src/docker/executor.hpp
@@ -76,6 +76,10 @@ struct Flags : public virtual mesos::internal::logging::Flags
         "A JSON map of environment variables and values that should\n"
         "be passed into the task launched by this executor.");
 
+    add(&Flags::default_container_dns,
+        "default_container_dns",
+        "JSON-formatted default DNS information for container.");
+
     add(&Flags::cgroups_enable_cfs,
         "cgroups_enable_cfs",
         "Cgroups feature flag to enable hard limits on CPU resources\n"
@@ -90,6 +94,7 @@ struct Flags : public virtual mesos::internal::logging::Flags
   Option<std::string> mapped_directory;
   Option<std::string> launcher_dir;
   Option<std::string> task_environment;
+  Option<std::string> default_container_dns;
 
   bool cgroups_enable_cfs;
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/48b5ef03/src/slave/containerizer/docker.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/docker.cpp 
b/src/slave/containerizer/docker.cpp
index 2fe9227..fee1e10 100644
--- a/src/slave/containerizer/docker.cpp
+++ b/src/slave/containerizer/docker.cpp
@@ -39,6 +39,7 @@
 #include <stout/jsonify.hpp>
 #include <stout/os.hpp>
 #include <stout/path.hpp>
+#include <stout/protobuf.hpp>
 #include <stout/uuid.hpp>
 
 #include <stout/os/killtree.hpp>
@@ -258,6 +259,11 @@ DockerContainerizer::~DockerContainerizer()
     dockerFlags.task_environment = string(jsonify(taskEnvironment.get()));
   }
 
+  if (flags.default_container_dns.isSome()) {
+    dockerFlags.default_container_dns =
+      string(jsonify(JSON::Protobuf(flags.default_container_dns.get())));
+  }
+
 #ifdef __linux__
   dockerFlags.cgroups_enable_cfs = flags.cgroups_enable_cfs,
 #endif

Reply via email to