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