You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2014/08/05 00:09:42 UTC

[21/43] git commit: Refactored docker::ps(), added 'prefix' option to inspect only interested containers.

Refactored docker::ps(), added 'prefix' option to inspect only interested containers.


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

Branch: refs/heads/master
Commit: d5f9c58de7ed77162df518bb0a206a94b83a28c0
Parents: 78d8e40
Author: Yifan Gu <gu...@gmail.com>
Authored: Wed Jul 2 18:28:54 2014 -0700
Committer: Benjamin Hindman <be...@gmail.com>
Committed: Mon Aug 4 15:08:16 2014 -0700

----------------------------------------------------------------------
 src/docker/docker.cpp                    | 21 ++++++++++++++++-----
 src/docker/docker.hpp                    |  7 +++++--
 src/slave/containerizer/docker.cpp       |  2 +-
 src/tests/docker_containerizer_tests.cpp |  3 ++-
 4 files changed, 24 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/d5f9c58d/src/docker/docker.cpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.cpp b/src/docker/docker.cpp
index 1a2d1d2..c46df07 100644
--- a/src/docker/docker.cpp
+++ b/src/docker/docker.cpp
@@ -281,7 +281,9 @@ Future<Docker::Container> Docker::_inspect(const Subprocess& s)
 }
 
 
-Future<list<Docker::Container> > Docker::ps(const bool all) const
+Future<list<Docker::Container> > Docker::ps(
+    const bool all,
+    const Option<string>& prefix) const
 {
   string cmd = all ? " ps -a" : " ps";
 
@@ -298,13 +300,14 @@ Future<list<Docker::Container> > Docker::ps(const bool all) const
   }
 
   return s.get().status()
-    .then(lambda::bind(&Docker::_ps, *this, s.get()));
+    .then(lambda::bind(&Docker::_ps, *this, s.get(), prefix));
 }
 
 
 Future<list<Docker::Container> > Docker::_ps(
     const Docker& docker,
-    const Subprocess& s)
+    const Subprocess& s,
+    const Option<string>& prefix)
 {
   // Check the exit status of 'docker ps'.
   CHECK_READY(s.status());
@@ -338,13 +341,21 @@ Future<list<Docker::Container> > Docker::_ps(
   list<Future<Docker::Container> > futures;
 
   foreach (const string& line, lines) {
-    // Inspect the container.
-    futures.push_back(docker.inspect(strings::split(line, " ")[0]));
+    // Inspect the containers that we are interested in depending on
+    // whether or not a 'prefix' was specified.
+    vector<string> columns = strings::split(strings::trim(line), " ");
+    string name = columns[columns.size() - 1];
+    if (prefix.isNone()) {
+      futures.push_back(docker.inspect(name));
+    } else if (strings::startsWith(name, prefix.get())) {
+      futures.push_back(docker.inspect(name));
+    }
   }
 
   return collect(futures);
 }
 
+
 Future<std::string> Docker::info() const
 {
   std::string cmd = path + " info";

http://git-wip-us.apache.org/repos/asf/mesos/blob/d5f9c58d/src/docker/docker.hpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.hpp b/src/docker/docker.hpp
index 9d2205c..89840af 100644
--- a/src/docker/docker.hpp
+++ b/src/docker/docker.hpp
@@ -26,6 +26,7 @@
 #include <process/subprocess.hpp>
 
 #include <stout/json.hpp>
+#include <stout/none.hpp>
 #include <stout/nothing.hpp>
 #include <stout/option.hpp>
 
@@ -87,7 +88,8 @@ public:
 
   // Performs 'docker ps (-a)'.
   process::Future<std::list<Container> > ps(
-      const bool all = false) const;
+      const bool all = false,
+      const Option<std::string>& prefix = None()) const;
 
   process::Future<std::string> info() const;
 
@@ -97,7 +99,8 @@ private:
       const process::Subprocess& s);
   static process::Future<std::list<Container> > _ps(
       const Docker& docker,
-      const process::Subprocess& s);
+      const process::Subprocess& s,
+      const Option<std::string>& prefix);
   static process::Future<Option<int> > _killAndRm(
       const Docker& docker,
       const std::string& container,

http://git-wip-us.apache.org/repos/asf/mesos/blob/d5f9c58d/src/slave/containerizer/docker.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/docker.cpp b/src/slave/containerizer/docker.cpp
index 44d4d3d..38b2a03 100644
--- a/src/slave/containerizer/docker.cpp
+++ b/src/slave/containerizer/docker.cpp
@@ -411,7 +411,7 @@ Future<Nothing> DockerContainerizerProcess::recover(
 
   // Get the list of all Docker containers (running and exited) in
   // order to remove any orphans.
-  return docker.ps(true)
+  return docker.ps(true, DOCKER_NAME_PREFIX)
     .then(defer(self(), &Self::_recover, lambda::_1));
 }
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/d5f9c58d/src/tests/docker_containerizer_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/docker_containerizer_tests.cpp b/src/tests/docker_containerizer_tests.cpp
index 5e41529..c0b915a 100644
--- a/src/tests/docker_containerizer_tests.cpp
+++ b/src/tests/docker_containerizer_tests.cpp
@@ -170,7 +170,8 @@ TEST_F(DockerContainerizerTest, DOCKER_Launch)
   AWAIT_READY_FOR(statusRunning, Seconds(60));
   EXPECT_EQ(TASK_RUNNING, statusRunning.get().state());
 
-  Future<list<Docker::Container> > containers = docker.ps(true);
+  Future<list<Docker::Container> > containers =
+    docker.ps(true, slave::DOCKER_NAME_PREFIX);
 
   AWAIT_READY(containers);