Modify Docker::pull to call inspect after pull.
Review: https://reviews.apache.org/r/25758
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<Docker::Image> Docker::pull(
const string& directory,
- const string& image)
+ const string& image) const
{
vector<string> argv;
@@ -783,6 +783,7 @@
return s.get().status()
.then(lambda::bind(
&Docker::_pull,
+ *this,
s.get(),
directory,
dockerImage,
@@ -791,6 +792,7 @@
Future<Docker::Image> Docker::_pull(
+ const Docker& docker,
const Subprocess& s,
const string& directory,
const string& image,
@@ -833,7 +835,13 @@
// 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 @@
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 @@
.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);
}
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 @@
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 @@
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);
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 @@
"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());