fix 404 when requesting empty tripleo container image catalog
This patch adds graceful handling for requests against tripleo container
image catalog requests, before the catalog is populated / created.
Change-Id: I0834e095dacb44f0742a15ae67f64c72db7d9c54
Closes-Bug: 1825046
(cherry picked from commit 294f67bd7e
)
This commit is contained in:
parent
eeee6fb90a
commit
f38d89e72e
@ -494,7 +494,16 @@ class BaseImageUploader(object):
|
||||
catalog_url = self._build_url(
|
||||
url, CALL_CATALOG
|
||||
)
|
||||
catalog = session.get(catalog_url, timeout=30).json()
|
||||
catalog_resp = session.get(catalog_url, timeout=30)
|
||||
if catalog_resp.status_code in [200]:
|
||||
catalog = catalog_resp.json()
|
||||
elif catalog_resp.status_code in [404]:
|
||||
catalog = {}
|
||||
else:
|
||||
raise ImageUploaderException(
|
||||
'Image registry made invalid response: %s' %
|
||||
(catalog_resp.status_code)
|
||||
)
|
||||
|
||||
tags_get_args = []
|
||||
for repo in catalog.get('repositories', []):
|
||||
|
@ -762,9 +762,12 @@ class TestBaseImageUploader(base.TestCase):
|
||||
('localhost:8787/t/bink', [])
|
||||
)
|
||||
session = mock.Mock()
|
||||
session.get.return_value.json.return_value = {
|
||||
response = mock.Mock()
|
||||
response.status_code = 200
|
||||
response.json.return_value = {
|
||||
'repositories': ['t/foo', 't/bar', 't/baz', 't/bink']
|
||||
}
|
||||
session.get.return_value = response
|
||||
self.assertEqual(
|
||||
[
|
||||
'localhost:8787/t/foo:a',
|
||||
@ -783,6 +786,34 @@ class TestBaseImageUploader(base.TestCase):
|
||||
(self.uploader, 'localhost:8787/t/bink', session)
|
||||
])
|
||||
|
||||
@mock.patch('concurrent.futures.ThreadPoolExecutor')
|
||||
def test_list_404(self, mock_pool):
|
||||
# setup bits
|
||||
session = mock.Mock()
|
||||
response = mock.Mock()
|
||||
response.status_code = 404
|
||||
session.get.return_value = response
|
||||
mock_pool.return_value.map.return_value = ()
|
||||
# execute function
|
||||
return_val = self.uploader.list('localhost:8787', session=session)
|
||||
# check status of things
|
||||
self.assertEqual(
|
||||
[],
|
||||
return_val
|
||||
)
|
||||
|
||||
@mock.patch('concurrent.futures.ThreadPoolExecutor')
|
||||
def test_list_500(self, mock_pool):
|
||||
session = mock.Mock()
|
||||
response = mock.Mock()
|
||||
response.status_code = 500
|
||||
session.get.return_value = response
|
||||
mock_pool.return_value.map.return_value = ()
|
||||
self.assertRaises(ImageUploaderException,
|
||||
self.uploader.list,
|
||||
'localhost:8787',
|
||||
session=session)
|
||||
|
||||
def test_tags_for_image(self):
|
||||
session = mock.Mock()
|
||||
r = mock.Mock()
|
||||
|
Loading…
Reference in New Issue
Block a user