Implemented passing Image::Secret Puller::pull().

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


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

Branch: refs/heads/master
Commit: 7ca46e24b3339ba27e88b99ea95362c956ef03c1
Parents: 6b83541
Author: Gilbert Song <songzihao1...@gmail.com>
Authored: Wed May 3 14:14:31 2017 -0700
Committer: Gilbert Song <songzihao1...@gmail.com>
Committed: Thu May 25 01:04:30 2017 +0800

----------------------------------------------------------------------
 .../mesos/provisioner/docker/local_puller.cpp      |  3 ++-
 .../mesos/provisioner/docker/local_puller.hpp      |  3 ++-
 .../mesos/provisioner/docker/puller.hpp            |  3 ++-
 .../mesos/provisioner/docker/registry_puller.cpp   | 12 ++++++++----
 .../mesos/provisioner/docker/registry_puller.hpp   |  3 ++-
 .../mesos/provisioner/docker/store.cpp             | 17 +++++++++++++++--
 .../containerizer/provisioner_docker_tests.cpp     | 12 +++++++-----
 7 files changed, 38 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/7ca46e24/src/slave/containerizer/mesos/provisioner/docker/local_puller.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/provisioner/docker/local_puller.cpp 
b/src/slave/containerizer/mesos/provisioner/docker/local_puller.cpp
index 5bc68d2..c4879ec 100644
--- a/src/slave/containerizer/mesos/provisioner/docker/local_puller.cpp
+++ b/src/slave/containerizer/mesos/provisioner/docker/local_puller.cpp
@@ -122,7 +122,8 @@ LocalPuller::~LocalPuller()
 Future<vector<string>> LocalPuller::pull(
     const spec::ImageReference& reference,
     const string& directory,
-    const string& backend)
+    const string& backend,
+    const Option<Secret>& config)
 {
   return dispatch(
       process.get(),

http://git-wip-us.apache.org/repos/asf/mesos/blob/7ca46e24/src/slave/containerizer/mesos/provisioner/docker/local_puller.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/provisioner/docker/local_puller.hpp 
b/src/slave/containerizer/mesos/provisioner/docker/local_puller.hpp
index 344baab..4d2e497 100644
--- a/src/slave/containerizer/mesos/provisioner/docker/local_puller.hpp
+++ b/src/slave/containerizer/mesos/provisioner/docker/local_puller.hpp
@@ -49,7 +49,8 @@ public:
   process::Future<std::vector<std::string>> pull(
       const ::docker::spec::ImageReference& reference,
       const std::string& directory,
-      const std::string& backend);
+      const std::string& backend,
+      const Option<Secret>& config = None());
 
 private:
   explicit LocalPuller(process::Owned<LocalPullerProcess> _process);

http://git-wip-us.apache.org/repos/asf/mesos/blob/7ca46e24/src/slave/containerizer/mesos/provisioner/docker/puller.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/provisioner/docker/puller.hpp 
b/src/slave/containerizer/mesos/provisioner/docker/puller.hpp
index 5ff1846..a79f2ad 100644
--- a/src/slave/containerizer/mesos/provisioner/docker/puller.hpp
+++ b/src/slave/containerizer/mesos/provisioner/docker/puller.hpp
@@ -61,7 +61,8 @@ public:
   virtual process::Future<std::vector<std::string>> pull(
       const ::docker::spec::ImageReference& reference,
       const std::string& directory,
-      const std::string& backend) = 0;
+      const std::string& backend,
+      const Option<Secret>& config = None()) = 0;
 };
 
 } // namespace docker {

http://git-wip-us.apache.org/repos/asf/mesos/blob/7ca46e24/src/slave/containerizer/mesos/provisioner/docker/registry_puller.cpp
----------------------------------------------------------------------
diff --git 
a/src/slave/containerizer/mesos/provisioner/docker/registry_puller.cpp 
b/src/slave/containerizer/mesos/provisioner/docker/registry_puller.cpp
index f8c31ae..1a724f2 100644
--- a/src/slave/containerizer/mesos/provisioner/docker/registry_puller.cpp
+++ b/src/slave/containerizer/mesos/provisioner/docker/registry_puller.cpp
@@ -70,7 +70,8 @@ public:
   Future<vector<string>> pull(
       const spec::ImageReference& reference,
       const string& directory,
-      const string& backend);
+      const string& backend,
+      const Option<Secret>& config);
 
 private:
   Future<vector<string>> _pull(
@@ -148,14 +149,16 @@ RegistryPuller::~RegistryPuller()
 Future<vector<string>> RegistryPuller::pull(
     const spec::ImageReference& reference,
     const string& directory,
-    const string& backend)
+    const string& backend,
+    const Option<Secret>& config)
 {
   return dispatch(
       process.get(),
       &RegistryPullerProcess::pull,
       reference,
       directory,
-      backend);
+      backend,
+      config);
 }
 
 
@@ -209,7 +212,8 @@ static spec::ImageReference normalize(
 Future<vector<string>> RegistryPullerProcess::pull(
     const spec::ImageReference& _reference,
     const string& directory,
-    const string& backend)
+    const string& backend,
+    const Option<Secret>& config)
 {
   spec::ImageReference reference = normalize(_reference, defaultRegistryUrl);
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/7ca46e24/src/slave/containerizer/mesos/provisioner/docker/registry_puller.hpp
----------------------------------------------------------------------
diff --git 
a/src/slave/containerizer/mesos/provisioner/docker/registry_puller.hpp 
b/src/slave/containerizer/mesos/provisioner/docker/registry_puller.hpp
index 0805f3c..4df679b 100644
--- a/src/slave/containerizer/mesos/provisioner/docker/registry_puller.hpp
+++ b/src/slave/containerizer/mesos/provisioner/docker/registry_puller.hpp
@@ -61,7 +61,8 @@ public:
   process::Future<std::vector<std::string>> pull(
       const ::docker::spec::ImageReference& reference,
       const std::string& directory,
-      const std::string& backend);
+      const std::string& backend,
+      const Option<Secret>& config = None());
 
 private:
   RegistryPuller(process::Owned<RegistryPullerProcess> _process);

http://git-wip-us.apache.org/repos/asf/mesos/blob/7ca46e24/src/slave/containerizer/mesos/provisioner/docker/store.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/provisioner/docker/store.cpp 
b/src/slave/containerizer/mesos/provisioner/docker/store.cpp
index b7883b8..8058dcb 100644
--- a/src/slave/containerizer/mesos/provisioner/docker/store.cpp
+++ b/src/slave/containerizer/mesos/provisioner/docker/store.cpp
@@ -88,6 +88,7 @@ public:
 private:
   Future<Image> _get(
       const spec::ImageReference& reference,
+      const Option<Secret>& config,
       const Option<Image>& image,
       const string& backend);
 
@@ -225,13 +226,21 @@ Future<ImageInfo> StoreProcess::get(
   }
 
   return metadataManager->get(reference.get(), image.cached())
-    .then(defer(self(), &Self::_get, reference.get(), lambda::_1, backend))
+    .then(defer(self(),
+                &Self::_get,
+                reference.get(),
+                image.docker().has_config()
+                  ? image.docker().config()
+                  : Option<Secret>(),
+                lambda::_1,
+                backend))
     .then(defer(self(), &Self::__get, lambda::_1, backend));
 }
 
 
 Future<Image> StoreProcess::_get(
     const spec::ImageReference& reference,
+    const Option<Secret>& config,
     const Option<Image>& image,
     const string& backend)
 {
@@ -279,7 +288,11 @@ Future<Image> StoreProcess::_get(
   if (!pulling.contains(name)) {
     Owned<Promise<Image>> promise(new Promise<Image>());
 
-    Future<Image> future = puller->pull(reference, staging.get(), backend)
+    Future<Image> future = puller->pull(
+        reference,
+        staging.get(),
+        backend,
+        config)
       .then(defer(self(),
                   &Self::moveLayers,
                   staging.get(),

http://git-wip-us.apache.org/repos/asf/mesos/blob/7ca46e24/src/tests/containerizer/provisioner_docker_tests.cpp
----------------------------------------------------------------------
diff --git a/src/tests/containerizer/provisioner_docker_tests.cpp 
b/src/tests/containerizer/provisioner_docker_tests.cpp
index ff0ad90..54b7fba 100644
--- a/src/tests/containerizer/provisioner_docker_tests.cpp
+++ b/src/tests/containerizer/provisioner_docker_tests.cpp
@@ -279,23 +279,25 @@ class MockPuller : public Puller
 public:
   MockPuller()
   {
-    EXPECT_CALL(*this, pull(_, _, _))
+    EXPECT_CALL(*this, pull(_, _, _, _))
       .WillRepeatedly(Invoke(this, &MockPuller::unmocked_pull));
   }
 
   virtual ~MockPuller() {}
 
-  MOCK_METHOD3(
+  MOCK_METHOD4(
       pull,
       Future<vector<string>>(
           const spec::ImageReference&,
           const string&,
-          const string&));
+          const string&,
+          const Option<Secret>&));
 
   Future<vector<string>> unmocked_pull(
       const spec::ImageReference& reference,
       const string& directory,
-      const string& backend)
+      const string& backend,
+      const Option<Secret>& config)
   {
     // TODO(gilbert): Allow return list to be overridden.
     return vector<string>();
@@ -317,7 +319,7 @@ TEST_F(ProvisionerDockerLocalStoreTest, 
PullingSameImageSimutanuously)
   Future<string> directory;
   Promise<vector<string>> promise;
 
-  EXPECT_CALL(*puller, pull(_, _, _))
+  EXPECT_CALL(*puller, pull(_, _, _, _))
     .WillOnce(testing::DoAll(FutureSatisfy(&pull),
                              FutureArg<1>(&directory),
                              Return(promise.future())));

Reply via email to