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