Repository: mesos Updated Branches: refs/heads/master 88ead2571 -> 3a179ce2d
Added loading of Isolator modules in mesos containerizer. If an Isolator type is not found in the default list, the code now queries ModuleManager and creates a module instance if found. Review: https://reviews.apache.org/r/26727 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/3a179ce2 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/3a179ce2 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/3a179ce2 Branch: refs/heads/master Commit: 3a179ce2d9fa119ca692682dfa6819498893ec95 Parents: 88ead25 Author: Kapil Arya <[email protected]> Authored: Wed Oct 22 14:58:19 2014 -0700 Committer: Niklas Q. Nielsen <[email protected]> Committed: Wed Oct 22 15:41:42 2014 -0700 ---------------------------------------------------------------------- src/slave/containerizer/mesos/containerizer.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/3a179ce2/src/slave/containerizer/mesos/containerizer.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/mesos/containerizer.cpp b/src/slave/containerizer/mesos/containerizer.cpp index 9d08329..9f745d8 100644 --- a/src/slave/containerizer/mesos/containerizer.cpp +++ b/src/slave/containerizer/mesos/containerizer.cpp @@ -24,6 +24,9 @@ #include <stout/os.hpp> +#include "module/isolator.hpp" +#include "module/manager.hpp" + #include "slave/paths.hpp" #include "slave/slave.hpp" @@ -58,6 +61,8 @@ namespace mesos { namespace internal { namespace slave { +using mesos::modules::ModuleManager; + using state::SlaveState; using state::FrameworkState; using state::ExecutorState; @@ -113,6 +118,14 @@ Try<MesosContainerizer*> MesosContainerizer::create( } else { isolators.push_back(Owned<Isolator>(isolator.get())); } + } else if (ModuleManager::contains<Isolator>(type)) { + Try<Isolator*> isolator = ModuleManager::create<Isolator>(type); + if (isolator.isError()) { + return Error( + "Could not create isolator " + type + ": " + isolator.error()); + } else { + isolators.push_back(Owned<Isolator>(isolator.get())); + } } else { return Error("Unknown or unsupported isolator: " + type); }
