diff --git a/zun/common/docker_image/reference.py b/zun/common/docker_image/reference.py index 2d5eca1f5..6b27b7207 100644 --- a/zun/common/docker_image/reference.py +++ b/zun/common/docker_image/reference.py @@ -72,6 +72,12 @@ class Reference(dict): matches = matched.groups() if len(matches) != 2: return '', name + hostname = matches[0] + if hostname is None: + return '', name + if ('.' not in hostname and ':' not in hostname and + hostname != 'localhost'): + return '', name return matches[0], matches[1] diff --git a/zun/tests/unit/common/docker_image/test_reference.py b/zun/tests/unit/common/docker_image/test_reference.py index 729b84cbf..af540cfc9 100644 --- a/zun/tests/unit/common/docker_image/test_reference.py +++ b/zun/tests/unit/common/docker_image/test_reference.py @@ -74,7 +74,7 @@ class TestReference(base.BaseTestCase): create_test_case(input_='{}a:tag-puts-this-over-max'. format('a/' * 127), repository='{}a'.format('a/' * 127), - hostname='a', + hostname='', tag='tag-puts-this-over-max'), create_test_case(input_='aa/asdf$$^/aa', err=reference.ReferenceInvalidFormat), @@ -106,12 +106,16 @@ class TestReference(base.BaseTestCase): tag='8080'), create_test_case(input_='foo/foo_bar.com:8080', repository='foo/foo_bar.com', - hostname='foo', + hostname='', tag='8080'), create_test_case(input_='test.com/foo', repository='test.com/foo', hostname='test.com', path='foo'), + create_test_case(input_='test_com/foo', + repository='test_com/foo', + hostname='', + path='test_com/foo'), create_test_case(input_='test:8080/foo', repository='test:8080/foo', hostname='test:8080',