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/09/18 11:33:36 UTC

git commit: Modify Docker::pull to call inspect after pull.

Repository: mesos
Updated Branches:
  refs/heads/master 14c605e8c -> 48db9a513


Modify Docker::pull to call inspect after pull.

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


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

Branch: refs/heads/master
Commit: 48db9a513fac0066c8f38aa98b8d893fdf298998
Parents: 14c605e
Author: Timothy Chen <tn...@apache.org>
Authored: Thu Sep 18 02:11:40 2014 -0700
Committer: Benjamin Hindman <be...@gmail.com>
Committed: Thu Sep 18 02:33:20 2014 -0700

----------------------------------------------------------------------
 src/docker/docker.cpp                    | 24 +++++++++++++++++++-----
 src/docker/docker.hpp                    |  8 ++++++--
 src/tests/docker_containerizer_tests.cpp |  2 +-
 3 files changed, 26 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/48db9a51/src/docker/docker.cpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.cpp b/src/docker/docker.cpp
index 6063114..7f95cbf 100644
--- a/src/docker/docker.cpp
+++ b/src/docker/docker.cpp
@@ -741,7 +741,7 @@ Future<list<Docker::Container> > Docker::__ps(
 
 Future<Docker::Image> Docker::pull(
     const string& directory,
-    const string& image)
+    const string& image) const
 {
   vector<string> argv;
 
@@ -783,6 +783,7 @@ Future<Docker::Image> Docker::pull(
   return s.get().status()
     .then(lambda::bind(
         &Docker::_pull,
+        *this,
         s.get(),
         directory,
         dockerImage,
@@ -791,6 +792,7 @@ Future<Docker::Image> Docker::pull(
 
 
 Future<Docker::Image> Docker::_pull(
+    const Docker& docker,
     const Subprocess& s,
     const string& directory,
     const string& image,
@@ -833,7 +835,13 @@ Future<Docker::Image> Docker::_pull(
   // we allow the future to be discarded and it will kill the pull
   // process.
   return s_.get().status()
-    .then(lambda::bind(&Docker::__pull, s_.get(), cmd))
+    .then(lambda::bind(
+        &Docker::__pull,
+        docker,
+        s_.get(),
+        cmd,
+        directory,
+        image))
     .onDiscard(lambda::bind(&Docker::pullDiscarded, s_.get(), cmd));
 }
 
@@ -846,8 +854,11 @@ void Docker::pullDiscarded(const Subprocess& s, const string& cmd)
 
 
 Future<Docker::Image> Docker::__pull(
+    const Docker& docker,
     const Subprocess& s,
-    const string& cmd)
+    const string& cmd,
+    const string& directory,
+    const string& image)
 {
   Option<int> status = s.status().get();
 
@@ -858,8 +869,11 @@ Future<Docker::Image> Docker::__pull(
       .then(lambda::bind(&failure<Image>, cmd, status.get(), lambda::_1));
   }
 
-  return io::read(s.out().get())
-    .then(lambda::bind(&Docker::___pull, lambda::_1));
+  // We re-invoke Docker::pull in order to now do an 'inspect' since
+  // the image should be present (see Docker::pull).
+  // TODO(benh): Factor out inspect code from Docker::pull to be
+  // reused rather than this (potentially infinite) recursive call.
+  return docker.pull(directory, image);
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/48db9a51/src/docker/docker.hpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.hpp b/src/docker/docker.hpp
index 443db49..7972eda 100644
--- a/src/docker/docker.hpp
+++ b/src/docker/docker.hpp
@@ -119,7 +119,7 @@ public:
 
   process::Future<Image> pull(
       const std::string& directory,
-      const std::string& image);
+      const std::string& image) const;
 
 private:
   // Uses the specified path to the Docker CLI tool.
@@ -151,14 +151,18 @@ private:
       const std::string& output);
 
   static process::Future<Image> _pull(
+      const Docker& docker,
       const process::Subprocess& s,
       const std::string& directory,
       const std::string& image,
       const std::string& path);
 
   static process::Future<Image> __pull(
+      const Docker& docker,
       const process::Subprocess& s,
-      const std::string& cmd);
+      const std::string& cmd,
+      const std::string& directory,
+      const std::string& image);
 
   static process::Future<Image> ___pull(
       const std::string& output);

http://git-wip-us.apache.org/repos/asf/mesos/blob/48db9a51/src/tests/docker_containerizer_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/docker_containerizer_tests.cpp b/src/tests/docker_containerizer_tests.cpp
index 1981f49..67d60a8 100644
--- a/src/tests/docker_containerizer_tests.cpp
+++ b/src/tests/docker_containerizer_tests.cpp
@@ -1851,7 +1851,7 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_PortMapping)
       "echo " + uuid + " | nc localhost 10000");
 
   ASSERT_SOME(s);
-  AWAIT_READY(s.get().status());
+  AWAIT_READY_FOR(s.get().status(), Seconds(60));
 
   string container = slave::DOCKER_NAME_PREFIX + stringify(containerId.get());