diff options
| author | Aanand Prasad <aanand.prasad@gmail.com> | 2015-12-10 12:37:59 +0000 |
|---|---|---|
| committer | Aanand Prasad <aanand.prasad@gmail.com> | 2015-12-10 12:42:54 +0000 |
| commit | 25b188440aecdb5482e815708d824c753d210edb (patch) | |
| tree | 6f185cbbcf39459587a8d5579440a127117fa07f | |
| parent | 9b890c4540dd82cff67ac69568df9bbcc155d07e (diff) | |
| download | docker-py-25b188440aecdb5482e815708d824c753d210edb.tar.gz | |
Treat 'index.docker.io' repo names as 'docker.io'
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
| -rw-r--r-- | docker/auth/auth.py | 15 | ||||
| -rw-r--r-- | tests/unit/auth_test.py | 31 |
2 files changed, 38 insertions, 8 deletions
diff --git a/docker/auth/auth.py b/docker/auth/auth.py index 1a44ce2..5607520 100644 --- a/docker/auth/auth.py +++ b/docker/auth/auth.py @@ -21,7 +21,7 @@ import six from .. import errors -INDEX_NAME = 'index.docker.io' +INDEX_NAME = 'docker.io' INDEX_URL = 'https://{0}/v1/'.format(INDEX_NAME) DOCKER_CONFIG_FILENAME = os.path.join('.docker', 'config.json') LEGACY_DOCKER_CONFIG_FILENAME = '.dockercfg' @@ -41,7 +41,14 @@ def resolve_repository_name(repo_name): 'Invalid index name ({0}). Cannot begin or end with a' ' hyphen.'.format(index_name) ) - return index_name, remote_name + return resolve_index_name(index_name), remote_name + + +def resolve_index_name(index_name): + index_name = convert_to_hostname(index_name) + if index_name == 'index.'+INDEX_NAME: + index_name = INDEX_NAME + return index_name def split_repo_name(repo_name): @@ -62,7 +69,7 @@ def resolve_authconfig(authconfig, registry=None): Returns None if no match was found. """ # Default to the public index server - registry = convert_to_hostname(registry) if registry else INDEX_NAME + registry = resolve_index_name(registry) if registry else INDEX_NAME log.debug("Looking for auth entry for {0}".format(repr(registry))) if registry in authconfig: @@ -70,7 +77,7 @@ def resolve_authconfig(authconfig, registry=None): return authconfig[registry] for key, config in six.iteritems(authconfig): - if convert_to_hostname(key) == registry: + if resolve_index_name(key) == registry: log.debug("Found {0}".format(repr(key))) return config diff --git a/tests/unit/auth_test.py b/tests/unit/auth_test.py index 6a0f510..a88984f 100644 --- a/tests/unit/auth_test.py +++ b/tests/unit/auth_test.py @@ -35,25 +35,31 @@ class ResolveRepositoryNameTest(base.BaseTestCase): def test_resolve_repository_name_hub_library_image(self): self.assertEqual( auth.resolve_repository_name('image'), - ('index.docker.io', 'image'), + ('docker.io', 'image'), ) def test_resolve_repository_name_dotted_hub_library_image(self): self.assertEqual( auth.resolve_repository_name('image.valid'), - ('index.docker.io', 'image.valid') + ('docker.io', 'image.valid') ) def test_resolve_repository_name_hub_image(self): self.assertEqual( auth.resolve_repository_name('username/image'), - ('index.docker.io', 'username/image'), + ('docker.io', 'username/image'), ) def test_explicit_hub_index_library_image(self): self.assertEqual( + auth.resolve_repository_name('docker.io/image'), + ('docker.io', 'image') + ) + + def test_explicit_legacy_hub_index_library_image(self): + self.assertEqual( auth.resolve_repository_name('index.docker.io/image'), - ('index.docker.io', 'image') + ('docker.io', 'image') ) def test_resolve_repository_name_private_registry(self): @@ -228,6 +234,23 @@ class ResolveAuthTest(base.BaseTestCase): )['username'], 'indexuser', ) + + def test_resolve_registry_and_auth_explicit_hub(self): + image = 'docker.io/username/image' + self.assertEqual( + auth.resolve_authconfig( + self.auth_config, auth.resolve_repository_name(image)[0] + )['username'], + 'indexuser', + ) + + def test_resolve_registry_and_auth_explicit_legacy_hub(self): + image = 'index.docker.io/username/image' + self.assertEqual( + auth.resolve_authconfig( + self.auth_config, auth.resolve_repository_name(image)[0] + )['username'], + 'indexuser', ) def test_resolve_registry_and_auth_private_registry(self): |
