summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAanand Prasad <aanand.prasad@gmail.com>2015-12-10 12:37:59 +0000
committerAanand Prasad <aanand.prasad@gmail.com>2015-12-10 12:42:54 +0000
commit25b188440aecdb5482e815708d824c753d210edb (patch)
tree6f185cbbcf39459587a8d5579440a127117fa07f
parent9b890c4540dd82cff67ac69568df9bbcc155d07e (diff)
downloaddocker-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.py15
-rw-r--r--tests/unit/auth_test.py31
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):