Kaydet (Commit) 25b18844 authored tarafından Aanand Prasad's avatar Aanand Prasad

Treat 'index.docker.io' repo names as 'docker.io'

Signed-off-by: 's avatarAanand Prasad <aanand.prasad@gmail.com>
üst 9b890c45
...@@ -21,7 +21,7 @@ import six ...@@ -21,7 +21,7 @@ import six
from .. import errors from .. import errors
INDEX_NAME = 'index.docker.io' INDEX_NAME = 'docker.io'
INDEX_URL = 'https://{0}/v1/'.format(INDEX_NAME) INDEX_URL = 'https://{0}/v1/'.format(INDEX_NAME)
DOCKER_CONFIG_FILENAME = os.path.join('.docker', 'config.json') DOCKER_CONFIG_FILENAME = os.path.join('.docker', 'config.json')
LEGACY_DOCKER_CONFIG_FILENAME = '.dockercfg' LEGACY_DOCKER_CONFIG_FILENAME = '.dockercfg'
...@@ -41,7 +41,14 @@ def resolve_repository_name(repo_name): ...@@ -41,7 +41,14 @@ def resolve_repository_name(repo_name):
'Invalid index name ({0}). Cannot begin or end with a' 'Invalid index name ({0}). Cannot begin or end with a'
' hyphen.'.format(index_name) ' 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): def split_repo_name(repo_name):
...@@ -62,7 +69,7 @@ def resolve_authconfig(authconfig, registry=None): ...@@ -62,7 +69,7 @@ def resolve_authconfig(authconfig, registry=None):
Returns None if no match was found. Returns None if no match was found.
""" """
# Default to the public index server # 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))) log.debug("Looking for auth entry for {0}".format(repr(registry)))
if registry in authconfig: if registry in authconfig:
...@@ -70,7 +77,7 @@ def resolve_authconfig(authconfig, registry=None): ...@@ -70,7 +77,7 @@ def resolve_authconfig(authconfig, registry=None):
return authconfig[registry] return authconfig[registry]
for key, config in six.iteritems(authconfig): 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))) log.debug("Found {0}".format(repr(key)))
return config return config
......
...@@ -35,25 +35,31 @@ class ResolveRepositoryNameTest(base.BaseTestCase): ...@@ -35,25 +35,31 @@ class ResolveRepositoryNameTest(base.BaseTestCase):
def test_resolve_repository_name_hub_library_image(self): def test_resolve_repository_name_hub_library_image(self):
self.assertEqual( self.assertEqual(
auth.resolve_repository_name('image'), auth.resolve_repository_name('image'),
('index.docker.io', 'image'), ('docker.io', 'image'),
) )
def test_resolve_repository_name_dotted_hub_library_image(self): def test_resolve_repository_name_dotted_hub_library_image(self):
self.assertEqual( self.assertEqual(
auth.resolve_repository_name('image.valid'), auth.resolve_repository_name('image.valid'),
('index.docker.io', 'image.valid') ('docker.io', 'image.valid')
) )
def test_resolve_repository_name_hub_image(self): def test_resolve_repository_name_hub_image(self):
self.assertEqual( self.assertEqual(
auth.resolve_repository_name('username/image'), auth.resolve_repository_name('username/image'),
('index.docker.io', 'username/image'), ('docker.io', 'username/image'),
) )
def test_explicit_hub_index_library_image(self): 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( self.assertEqual(
auth.resolve_repository_name('index.docker.io/image'), auth.resolve_repository_name('index.docker.io/image'),
('index.docker.io', 'image') ('docker.io', 'image')
) )
def test_resolve_repository_name_private_registry(self): def test_resolve_repository_name_private_registry(self):
...@@ -228,6 +234,23 @@ class ResolveAuthTest(base.BaseTestCase): ...@@ -228,6 +234,23 @@ class ResolveAuthTest(base.BaseTestCase):
)['username'], )['username'],
'indexuser', '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): def test_resolve_registry_and_auth_private_registry(self):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment