From 4ed3735cda0672b73772cb38d785193744ed72aa Mon Sep 17 00:00:00 2001 From: Hannes Ljungberg Date: Tue, 19 Mar 2019 06:39:17 +0100 Subject: [PATCH] docker_swarm_service: Support resolving images from private registries (#53997) * Override inspect_distribution to fetch digest * Formatting fix * Use single quote strings --- lib/ansible/module_utils/docker/common.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/ansible/module_utils/docker/common.py b/lib/ansible/module_utils/docker/common.py index 2af7433b04..6056bc68f7 100644 --- a/lib/ansible/module_utils/docker/common.py +++ b/lib/ansible/module_utils/docker/common.py @@ -689,6 +689,21 @@ class AnsibleDockerClient(Client): elif isinstance(result, string_types) and result: self.module.warn('Docker warning: {0}'.format(result)) + def inspect_distribution(self, image): + ''' + Get image digest by directly calling the Docker API when running Docker SDK < 4.0.0 + since prior versions did not support accessing private repositories. + ''' + if self.docker_py_version < LooseVersion('4.0.0'): + registry = auth.resolve_repository_name(image)[0] + header = auth.get_config_header(self, registry) + if header: + return self._result(self._get( + self._url('/distribution/{0}/json', image), + headers={'X-Registry-Auth': header} + ), json=True) + return super(AnsibleDockerClient, self).inspect_distribution(image) + def compare_dict_allow_more_present(av, bv): '''