Refactor executorEnvironment to take slave::Flags. Review: https://reviews.apache.org/r/35566
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/3f11340a Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/3f11340a Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/3f11340a Branch: refs/heads/master Commit: 3f11340a4b053ad36db5762b445c3b4c1086a271 Parents: 4d37ed6 Author: Benjamin Hindman <[email protected]> Authored: Mon Jun 15 00:28:27 2015 -0700 Committer: Benjamin Hindman <[email protected]> Committed: Wed Jun 24 17:27:24 2015 -0700 ---------------------------------------------------------------------- src/slave/containerizer/containerizer.cpp | 4 ++-- src/slave/containerizer/containerizer.hpp | 16 +++++++++++-- src/slave/containerizer/docker.cpp | 4 ++-- src/slave/containerizer/docker.hpp | 2 +- .../containerizer/external_containerizer.cpp | 2 +- src/slave/containerizer/mesos/containerizer.cpp | 2 +- src/tests/containerizer.cpp | 25 ++++++++++++-------- 7 files changed, 36 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/3f11340a/src/slave/containerizer/containerizer.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/containerizer.cpp b/src/slave/containerizer/containerizer.cpp index 57343fd..ca1c3c1 100644 --- a/src/slave/containerizer/containerizer.cpp +++ b/src/slave/containerizer/containerizer.cpp @@ -240,7 +240,7 @@ map<string, string> executorEnvironment( const SlaveID& slaveId, const PID<Slave>& slavePid, bool checkpoint, - const Duration& recoveryTimeout) + const Flags& flags) { map<string, string> environment = os::environment(); @@ -289,7 +289,7 @@ map<string, string> executorEnvironment( environment["MESOS_CHECKPOINT"] = checkpoint ? "1" : "0"; if (checkpoint) { - environment["MESOS_RECOVERY_TIMEOUT"] = stringify(recoveryTimeout); + environment["MESOS_RECOVERY_TIMEOUT"] = stringify(flags.recovery_timeout); } if (HookManager::hooksAvailable()) { http://git-wip-us.apache.org/repos/asf/mesos/blob/3f11340a/src/slave/containerizer/containerizer.hpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/containerizer.hpp b/src/slave/containerizer/containerizer.hpp index 0b67d1b..0ee17e6 100644 --- a/src/slave/containerizer/containerizer.hpp +++ b/src/slave/containerizer/containerizer.hpp @@ -129,14 +129,26 @@ public: }; -// Executor environment variables returned as (name, value) map. +/** + * Returns a map of environment variables necessary in order to launch + * an executor. + * + * @param executorInfo ExecutorInfo being launched. + * @param directory Path to the sandbox directory. + * @param slaveId SlaveID where this executor is being launched. + * @param slavePid PID of the slave launching the executor. + * @param checkpoint Whether or not the slave is checkpointing. + * @param flags Flags used to launch the slave. + * + * @return Map of environment variables (name, value). + */ std::map<std::string, std::string> executorEnvironment( const ExecutorInfo& executorInfo, const std::string& directory, const SlaveID& slaveId, const process::PID<Slave>& slavePid, bool checkpoint, - const Duration& recoveryTimeout); + const Flags& flags); } // namespace slave { } // namespace internal { http://git-wip-us.apache.org/repos/asf/mesos/blob/3f11340a/src/slave/containerizer/docker.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/docker.cpp b/src/slave/containerizer/docker.cpp index 00db981..6eb1c84 100644 --- a/src/slave/containerizer/docker.cpp +++ b/src/slave/containerizer/docker.cpp @@ -302,7 +302,7 @@ DockerContainerizerProcess::Container::create( slaveId, slavePid, checkpoint, - flags.recovery_timeout); + flags); launchesExecutorContainer = true; } @@ -875,7 +875,7 @@ Future<pid_t> DockerContainerizerProcess::launchExecutorProcess( container->slaveId, container->slavePid, container->checkpoint, - flags.recovery_timeout); + flags); // Include any enviroment variables from ExecutorInfo. foreach (const Environment::Variable& variable, http://git-wip-us.apache.org/repos/asf/mesos/blob/3f11340a/src/slave/containerizer/docker.hpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/docker.hpp b/src/slave/containerizer/docker.hpp index 395d535..646a277 100644 --- a/src/slave/containerizer/docker.hpp +++ b/src/slave/containerizer/docker.hpp @@ -332,7 +332,7 @@ private: slaveId, slavePid, checkpoint, - flags.recovery_timeout); + flags); } } http://git-wip-us.apache.org/repos/asf/mesos/blob/3f11340a/src/slave/containerizer/external_containerizer.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/external_containerizer.cpp b/src/slave/containerizer/external_containerizer.cpp index 113dd3a..d3640e7 100644 --- a/src/slave/containerizer/external_containerizer.cpp +++ b/src/slave/containerizer/external_containerizer.cpp @@ -454,7 +454,7 @@ Future<bool> ExternalContainerizerProcess::launch( slaveId, slavePid, checkpoint, - flags.recovery_timeout); + flags); // TODO(tillt): Consider moving this into // Containerizer::executorEnvironment. http://git-wip-us.apache.org/repos/asf/mesos/blob/3f11340a/src/slave/containerizer/mesos/containerizer.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/mesos/containerizer.cpp b/src/slave/containerizer/mesos/containerizer.cpp index 0ea8ab5..313e9b7 100644 --- a/src/slave/containerizer/mesos/containerizer.cpp +++ b/src/slave/containerizer/mesos/containerizer.cpp @@ -698,7 +698,7 @@ Future<bool> MesosContainerizerProcess::_launch( slaveId, slavePid, checkpoint, - flags.recovery_timeout); + flags); // Include any enviroment variables from CommandInfo. foreach (const Environment::Variable& variable, http://git-wip-us.apache.org/repos/asf/mesos/blob/3f11340a/src/tests/containerizer.cpp ---------------------------------------------------------------------- diff --git a/src/tests/containerizer.cpp b/src/tests/containerizer.cpp index 68c6f98..355fb90 100644 --- a/src/tests/containerizer.cpp +++ b/src/tests/containerizer.cpp @@ -103,39 +103,44 @@ Future<bool> TestContainerizer::_launch( drivers[containerId] = driver; // Prepare additional environment variables for the executor. - const map<string, string>& env = executorEnvironment( + // TODO(benh): Need to get flags passed into the TestContainerizer + // in order to properly use here. + slave::Flags flags; + flags.recovery_timeout = Duration::zero(); + + const map<string, string> environment = executorEnvironment( executorInfo, directory, slaveId, slavePid, checkpoint, - Duration::zero()); + flags); - foreachpair (const string& name, const string variable, env) { + foreachpair (const string& name, const string variable, environment) { os::setenv(name, variable); } - foreach (const Environment_Variable& variable, - executorInfo.command().environment().variables()) { + foreach (const Environment::Variable& variable, + executorInfo.command().environment().variables()) { os::setenv(variable.name(), variable.value()); } os::setenv("MESOS_LOCAL", "1"); driver->start(); - foreachkey (const string& name, env) { + foreachkey (const string& name, environment) { os::unsetenv(name); } - foreach(const Environment_Variable& variable, - executorInfo.command().environment().variables()) { + foreach (const Environment::Variable& variable, + executorInfo.command().environment().variables()) { os::unsetenv(variable.name()); } os::unsetenv("MESOS_LOCAL"); - Owned<Promise<containerizer::Termination> > promise( + promises[containerId] = + Owned<Promise<containerizer::Termination>>( new Promise<containerizer::Termination>()); - promises[containerId] = promise; return true; }
