You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by al...@apache.org on 2017/03/15 20:30:12 UTC

mesos git commit: Implemented 'ComposingContainerizer::remove(const ContainerID&)'.

Repository: mesos
Updated Branches:
  refs/heads/master 4575e3879 -> 809b90f1e


Implemented 'ComposingContainerizer::remove(const ContainerID&)'.

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


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

Branch: refs/heads/master
Commit: 809b90f1edcc7da588f7e7a0e8e5f47e3a634295
Parents: 4575e38
Author: Gast�n Kleiman <ga...@mesosphere.io>
Authored: Wed Mar 15 21:16:05 2017 +0100
Committer: Alexander Rukletsov <al...@apache.org>
Committed: Wed Mar 15 21:29:35 2017 +0100

----------------------------------------------------------------------
 src/slave/containerizer/composing.cpp | 27 +++++++++++++++++++++++++++
 src/slave/containerizer/composing.hpp |  2 ++
 2 files changed, 29 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/809b90f1/src/slave/containerizer/composing.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/composing.cpp b/src/slave/containerizer/composing.cpp
index 46539e4..b5b66b3 100644
--- a/src/slave/containerizer/composing.cpp
+++ b/src/slave/containerizer/composing.cpp
@@ -102,6 +102,8 @@ public:
 
   Future<hashset<ContainerID>> containers();
 
+  Future<Nothing> remove(const ContainerID& containerId);
+
 private:
   // Continuations.
   Future<Nothing> _recover();
@@ -277,6 +279,12 @@ Future<hashset<ContainerID>> ComposingContainerizer::containers()
 }
 
 
+Future<Nothing> ComposingContainerizer::remove(const ContainerID& containerId)
+{
+  return dispatch(process, &ComposingContainerizerProcess::remove, containerId);
+}
+
+
 ComposingContainerizerProcess::~ComposingContainerizerProcess()
 {
   foreach (Containerizer* containerizer, containerizers_) {
@@ -696,6 +704,25 @@ Future<hashset<ContainerID>> ComposingContainerizerProcess::containers()
   return containers_.keys();
 }
 
+
+Future<Nothing> ComposingContainerizerProcess::remove(
+    const ContainerID& containerId)
+{
+  // A precondition of this method is that the nested container has already
+  // been terminated, hence `containers_` won't contain it. To work around it,
+  // we use the containerizer that launched the root container to remove the
+  // nested container.
+
+  const ContainerID rootContainerId = protobuf::getRootContainerId(containerId);
+
+  if (!containers_.contains(rootContainerId)) {
+    return Failure(
+        "Root container " + stringify(rootContainerId) + " not found");
+  }
+
+  return containers_[rootContainerId]->containerizer->remove(containerId);
+}
+
 } // namespace slave {
 } // namespace internal {
 } // namespace mesos {

http://git-wip-us.apache.org/repos/asf/mesos/blob/809b90f1/src/slave/containerizer/composing.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/composing.hpp b/src/slave/containerizer/composing.hpp
index 292374a..8e04bfe 100644
--- a/src/slave/containerizer/composing.hpp
+++ b/src/slave/containerizer/composing.hpp
@@ -91,6 +91,8 @@ public:
 
   virtual process::Future<hashset<ContainerID>> containers();
 
+  virtual process::Future<Nothing> remove(const ContainerID& containerId);
+
 private:
   ComposingContainerizerProcess* process;
 };