You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by jo...@apache.org on 2017/05/26 01:40:54 UTC
[03/16] mesos git commit: Combined containerizer interface's launch
methods.
Combined containerizer interface's launch methods.
When nested container support was added, we added a separate `launch`
path in the containerizer because nested containers do not need
an explicit TaskInfo/ExecutorInfo. Nested containers basically
only need the CommandInfo and ContainerInfo.
This commit combines the two launch methods by replacing most of the
"Infos" (Task, Executor, Command, Container) with a `ContainerConfig`
argument, which may contain multiple combinations of the "Infos".
The goal is to support three launch paths for containers:
1) When the `ContainerConfig` contains a TaskInfo/ExecutorInfo,
launch a task or executor.
2) When the `ContainerID` has a parent, launch a nested container.
3) (Not implemented yet) When there is no TaskInfo/ExecutorInfo or
parent container, launch a standalone container.
There are two other notable changes to the interface:
* The `SlaveID` field has been removed entirely. The code that
requires this (in the fetcher and Docker containerizer) will be
addressed in a separate commit.
* The `checkpoint` bool has been replaced by an Option<string>,
which contains the path that should be used for checkpointing.
This path includes the filename.
This is also one of the reasons why `SlaveID` was an argument.
Review: https://reviews.apache.org/r/58899
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/0709ce3c
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/0709ce3c
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/0709ce3c
Branch: refs/heads/master
Commit: 0709ce3c7a3c09948e23761281ad9c5059484916
Parents: 7a8f864
Author: Joseph Wu <jo...@apache.org>
Authored: Mon Apr 10 14:06:33 2017 -0700
Committer: Joseph Wu <jo...@apache.org>
Committed: Thu May 25 18:37:06 2017 -0700
----------------------------------------------------------------------
src/slave/containerizer/containerizer.hpp | 36 ++++++++------------------
1 file changed, 11 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/0709ce3c/src/slave/containerizer/containerizer.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/containerizer.hpp b/src/slave/containerizer/containerizer.hpp
index f17e424..0954ed6 100644
--- a/src/slave/containerizer/containerizer.hpp
+++ b/src/slave/containerizer/containerizer.hpp
@@ -81,34 +81,20 @@ public:
virtual process::Future<Nothing> recover(
const Option<state::SlaveState>& state) = 0;
- // Launch a containerized task/executor. Returns true if launching
- // this TaskInfo/ExecutorInfo is supported and it has been launched,
- // otherwise false or a failure if something went wrong.
- virtual process::Future<bool> launch(
- const ContainerID& containerId,
- const Option<TaskInfo>& taskInfo,
- const ExecutorInfo& executorInfo,
- const std::string& directory,
- const Option<std::string>& user,
- const SlaveID& slaveId,
- const std::map<std::string, std::string>& environment,
- bool checkpoint) = 0;
-
- // Launch a nested container.
- // TODO(jieyu): Consider combining with the 'launch' above.
+ // Launch a container with the specified ContainerConfig.
+ //
+ // If the ContainerID has a parent, this will attempt to launch
+ // a nested container.
+ // NOTE: For nested containers, the required `directory` field of
+ // the ContainerConfig will be determined by the containerizer.
//
- // TODO(gilbert): Remove the 'slaveId' once the fetcher does
- // not rely on SlaveID.
+ // Returns true if launching this container is supported and it has
+ // been launched, otherwise false or a failure if something went wrong.
virtual process::Future<bool> launch(
const ContainerID& containerId,
- const CommandInfo& commandInfo,
- const Option<ContainerInfo>& containerInfo,
- const Option<std::string>& user,
- const SlaveID& slaveId,
- const Option<mesos::slave::ContainerClass>& containerClass = None())
- {
- return process::Failure("Unsupported");
- }
+ const mesos::slave::ContainerConfig& containerConfig,
+ const std::map<std::string, std::string>& environment,
+ const Option<std::string>& pidCheckpointPath) = 0;
// Create an HTTP connection that can be used to "attach" (i.e.,
// stream input to or stream output from) a container.