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);