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

[5/8] mesos git commit: Added excluded image parameter to containerizer pruneImages().

Added excluded image parameter to containerizer pruneImages().

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


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

Branch: refs/heads/master
Commit: 1f164fb6b3da49ffc5e1b97e026969f3d5703470
Parents: c399377
Author: Gilbert Song <so...@gmail.com>
Authored: Sun Nov 26 15:46:01 2017 -0500
Committer: Gilbert Song <so...@gmail.com>
Committed: Wed Dec 6 12:04:19 2017 -0800

----------------------------------------------------------------------
 src/slave/containerizer/composing.cpp           | 13 ++++++-----
 src/slave/containerizer/composing.hpp           |  3 ++-
 src/slave/containerizer/containerizer.hpp       |  3 ++-
 src/slave/containerizer/docker.cpp              |  3 ++-
 src/slave/containerizer/docker.hpp              |  3 ++-
 src/slave/containerizer/mesos/containerizer.cpp | 23 +++++++++++++-------
 src/slave/containerizer/mesos/containerizer.hpp |  6 +++--
 src/tests/containerizer.cpp                     | 10 +++++----
 src/tests/containerizer.hpp                     |  7 +++---
 src/tests/containerizer/mock_containerizer.hpp  |  5 ++++-
 10 files changed, 49 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/1f164fb6/src/slave/containerizer/composing.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/composing.cpp b/src/slave/containerizer/composing.cpp
index 8388096..9ace70d 100644
--- a/src/slave/containerizer/composing.cpp
+++ b/src/slave/containerizer/composing.cpp
@@ -95,7 +95,7 @@ public:
 
   Future<Nothing> remove(const ContainerID& containerId);
 
-  Future<Nothing> pruneImages();
+  Future<Nothing> pruneImages(const vector<Image>& excludedImages);
 
 private:
   // Continuations.
@@ -265,9 +265,11 @@ Future<Nothing> ComposingContainerizer::remove(const ContainerID& containerId)
 }
 
 
-Future<Nothing> ComposingContainerizer::pruneImages()
+Future<Nothing> ComposingContainerizer::pruneImages(
+    const vector<Image>& excludedImages)
 {
-  return dispatch(process, &ComposingContainerizerProcess::pruneImages);
+  return dispatch(
+      process, &ComposingContainerizerProcess::pruneImages, excludedImages);
 }
 
 
@@ -697,12 +699,13 @@ Future<Nothing> ComposingContainerizerProcess::remove(
 }
 
 
-Future<Nothing> ComposingContainerizerProcess::pruneImages()
+Future<Nothing> ComposingContainerizerProcess::pruneImages(
+    const vector<Image>& excludedImages)
 {
   list<Future<Nothing>> futures;
 
   foreach (Containerizer* containerizer, containerizers_) {
-    futures.push_back(containerizer->pruneImages());
+    futures.push_back(containerizer->pruneImages(excludedImages));
   }
 
   return collect(futures)

http://git-wip-us.apache.org/repos/asf/mesos/blob/1f164fb6/src/slave/containerizer/composing.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/composing.hpp b/src/slave/containerizer/composing.hpp
index 3d00609..1221d9b 100644
--- a/src/slave/containerizer/composing.hpp
+++ b/src/slave/containerizer/composing.hpp
@@ -86,7 +86,8 @@ public:
 
   virtual process::Future<Nothing> remove(const ContainerID& containerId);
 
-  virtual process::Future<Nothing> pruneImages();
+  virtual process::Future<Nothing> pruneImages(
+      const std::vector<Image>& excludedImages);
 
 private:
   ComposingContainerizerProcess* process;

http://git-wip-us.apache.org/repos/asf/mesos/blob/1f164fb6/src/slave/containerizer/containerizer.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/containerizer.hpp b/src/slave/containerizer/containerizer.hpp
index 7a0c6fc..836283a 100644
--- a/src/slave/containerizer/containerizer.hpp
+++ b/src/slave/containerizer/containerizer.hpp
@@ -167,7 +167,8 @@ public:
   }
 
   // Prune unused images from supported image stores.
-  virtual process::Future<Nothing> pruneImages() = 0;
+  virtual process::Future<Nothing> pruneImages(
+      const std::vector<Image>& excludedImages) = 0;
 };
 
 } // namespace slave {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1f164fb6/src/slave/containerizer/docker.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/docker.cpp b/src/slave/containerizer/docker.cpp
index d837442..229891d 100644
--- a/src/slave/containerizer/docker.cpp
+++ b/src/slave/containerizer/docker.cpp
@@ -876,7 +876,8 @@ Future<hashset<ContainerID>> DockerContainerizer::containers()
 }
 
 
-Future<Nothing> DockerContainerizer::pruneImages()
+Future<Nothing> DockerContainerizer::pruneImages(
+    const vector<Image>& excludedImages)
 {
   VLOG(1) << "DockerContainerizer does not support pruneImages";
   return Nothing();

http://git-wip-us.apache.org/repos/asf/mesos/blob/1f164fb6/src/slave/containerizer/docker.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/docker.hpp b/src/slave/containerizer/docker.hpp
index 9df9849..f1b56c8 100644
--- a/src/slave/containerizer/docker.hpp
+++ b/src/slave/containerizer/docker.hpp
@@ -109,7 +109,8 @@ public:
 
   virtual process::Future<hashset<ContainerID>> containers();
 
-  virtual process::Future<Nothing> pruneImages();
+  virtual process::Future<Nothing> pruneImages(
+      const std::vector<Image>& excludedImages);
 
 private:
   process::Owned<DockerContainerizerProcess> process;

http://git-wip-us.apache.org/repos/asf/mesos/blob/1f164fb6/src/slave/containerizer/mesos/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.cpp b/src/slave/containerizer/mesos/containerizer.cpp
index 44e8f7a..a673117 100644
--- a/src/slave/containerizer/mesos/containerizer.cpp
+++ b/src/slave/containerizer/mesos/containerizer.cpp
@@ -660,9 +660,11 @@ Future<Nothing> MesosContainerizer::remove(const ContainerID& containerId)
 }
 
 
-Future<Nothing> MesosContainerizer::pruneImages()
+Future<Nothing> MesosContainerizer::pruneImages(
+    const vector<Image>& excludedImages)
 {
-  return dispatch(process.get(), &MesosContainerizerProcess::pruneImages);
+  return dispatch(
+      process.get(), &MesosContainerizerProcess::pruneImages, excludedImages);
 }
 
 
@@ -2828,10 +2830,11 @@ Future<hashset<ContainerID>> MesosContainerizerProcess::containers()
 }
 
 
-Future<Nothing> MesosContainerizerProcess::pruneImages()
+Future<Nothing> MesosContainerizerProcess::pruneImages(
+    const vector<Image>& excludedImages)
 {
-  vector<Image> excludedImages;
-  excludedImages.reserve(containers_.size());
+  vector<Image> _excludedImages;
+  _excludedImages.reserve(containers_.size() + excludedImages.size());
 
   foreachpair (
       const ContainerID& containerId,
@@ -2850,14 +2853,18 @@ Future<Nothing> MesosContainerizerProcess::pruneImages()
     const ContainerConfig& containerConfig = container->config.get();
     if (containerConfig.has_container_info() &&
         containerConfig.container_info().mesos().has_image()) {
-      excludedImages.push_back(
+      _excludedImages.push_back(
           containerConfig.container_info().mesos().image());
     }
   }
 
-  // TODO(zhitao): use std::unique to deduplicate `excludedImages`.
+  foreach (const Image& image, excludedImages) {
+    _excludedImages.push_back(image);
+  }
+
+  // TODO(zhitao): use std::unique to deduplicate `_excludedImages`.
 
-  return provisioner->pruneImages(excludedImages);
+  return provisioner->pruneImages(_excludedImages);
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/1f164fb6/src/slave/containerizer/mesos/containerizer.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/containerizer.hpp b/src/slave/containerizer/mesos/containerizer.hpp
index e2739e0..965e183 100644
--- a/src/slave/containerizer/mesos/containerizer.hpp
+++ b/src/slave/containerizer/mesos/containerizer.hpp
@@ -111,7 +111,8 @@ public:
 
   virtual process::Future<Nothing> remove(const ContainerID& containerId);
 
-  virtual process::Future<Nothing> pruneImages();
+  virtual process::Future<Nothing> pruneImages(
+      const std::vector<Image>& excludedImages);
 
 private:
   explicit MesosContainerizer(
@@ -183,7 +184,8 @@ public:
 
   virtual process::Future<hashset<ContainerID>> containers();
 
-  virtual process::Future<Nothing> pruneImages();
+  virtual process::Future<Nothing> pruneImages(
+      const std::vector<Image>& excludedImages);
 
 private:
   enum State

http://git-wip-us.apache.org/repos/asf/mesos/blob/1f164fb6/src/tests/containerizer.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer.cpp b/src/tests/containerizer.cpp
index 665bd5d..13a290f 100644
--- a/src/tests/containerizer.cpp
+++ b/src/tests/containerizer.cpp
@@ -314,7 +314,7 @@ public:
     return containers_.keys();
   }
 
-  Future<Nothing> pruneImages()
+  Future<Nothing> pruneImages(const vector<Image>& excludedImages)
   {
     return Nothing();
   }
@@ -444,7 +444,7 @@ void TestContainerizer::setup()
   EXPECT_CALL(*this, kill(_, _))
     .WillRepeatedly(Invoke(this, &TestContainerizer::_kill));
 
-  EXPECT_CALL(*this, pruneImages())
+  EXPECT_CALL(*this, pruneImages(_))
     .WillRepeatedly(Invoke(this, &TestContainerizer::_pruneImages));
 }
 
@@ -578,11 +578,13 @@ Future<hashset<ContainerID>> TestContainerizer::containers()
 }
 
 
-Future<Nothing> TestContainerizer::_pruneImages()
+Future<Nothing> TestContainerizer::_pruneImages(
+    const vector<Image>& excludedImages)
 {
   return process::dispatch(
       process.get(),
-      &TestContainerizerProcess::pruneImages);
+      &TestContainerizerProcess::pruneImages,
+      excludedImages);
 }
 
 } // namespace tests {

http://git-wip-us.apache.org/repos/asf/mesos/blob/1f164fb6/src/tests/containerizer.hpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer.hpp b/src/tests/containerizer.hpp
index 3d162fe..179f854 100644
--- a/src/tests/containerizer.hpp
+++ b/src/tests/containerizer.hpp
@@ -122,9 +122,9 @@ public:
       kill,
       process::Future<bool>(const ContainerID&, int));
 
-  MOCK_METHOD0(
+  MOCK_METHOD1(
       pruneImages,
-      process::Future<Nothing>());
+      process::Future<Nothing>(const std::vector<Image>&));
 
   // Additional destroy method for testing because we won't know the
   // ContainerID created for each container.
@@ -172,7 +172,8 @@ private:
       const ContainerID& containerId,
       int status);
 
-  process::Future<Nothing> _pruneImages();
+  process::Future<Nothing> _pruneImages(
+      const std::vector<Image>& excludedImages);
 
   process::Owned<TestContainerizerProcess> process;
 };

http://git-wip-us.apache.org/repos/asf/mesos/blob/1f164fb6/src/tests/containerizer/mock_containerizer.hpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/mock_containerizer.hpp b/src/tests/containerizer/mock_containerizer.hpp
index bbfa768..01c617a 100644
--- a/src/tests/containerizer/mock_containerizer.hpp
+++ b/src/tests/containerizer/mock_containerizer.hpp
@@ -82,7 +82,10 @@ public:
       containers,
       process::Future<hashset<ContainerID>>());
 
-  MOCK_METHOD0(pruneImages, process::Future<Nothing>());
+  MOCK_METHOD1(
+      pruneImages,
+      process::Future<Nothing>(
+          const std::vector<Image>&));
 };
 
 } // namespace tests {