Skip to content
Snippets Groups Projects
Commit ae34973d authored by Jeffrey Zhang's avatar Jeffrey Zhang
Browse files

Fix the kolla_docker issue with docker 1.12

After docker 1.12, the RepoTags will be None rather than [] in the
image list API. This PS will handle the both case.

Change-Id: Ie2da44b44229c2f190550755b50876f607f9cc0c
Closes-Bug: #1608358
parent e5ca547f
No related branches found
No related tags found
No related merge requests found
...@@ -242,7 +242,10 @@ class DockerWorker(object): ...@@ -242,7 +242,10 @@ class DockerWorker(object):
def check_image(self): def check_image(self):
find_image = ':'.join(self.parse_image()) find_image = ':'.join(self.parse_image())
for image in self.dc.images(): for image in self.dc.images():
for image_name in image['RepoTags']: repo_tags = image.get('RepoTags')
if not repo_tags:
continue
for image_name in repo_tags:
if image_name == find_image: if image_name == find_image:
return image return image
......
...@@ -388,6 +388,28 @@ class TestImage(base.BaseTestCase): ...@@ -388,6 +388,28 @@ class TestImage(base.BaseTestCase):
self.dw.dc.images.assert_called_once_with() self.dw.dc.images.assert_called_once_with()
self.assertEqual(self.fake_data['images'][0], return_data) self.assertEqual(self.fake_data['images'][0], return_data)
def test_check_image_before_docker_1_12(self):
self.dw = get_DockerWorker(
{'image': 'myregistrydomain.com:5000/centos:7.0'})
self.fake_data['images'][0]['RepoTags'] = []
self.dw.dc.images.return_value = self.fake_data['images']
return_data = self.dw.check_image()
self.assertFalse(self.dw.changed)
self.dw.dc.images.assert_called_once_with()
self.assertEqual(self.fake_data['images'][1], return_data)
def test_check_image_docker_1_12(self):
self.dw = get_DockerWorker(
{'image': 'myregistrydomain.com:5000/centos:7.0'})
self.fake_data['images'][0]['RepoTags'] = None
self.dw.dc.images.return_value = self.fake_data['images']
return_data = self.dw.check_image()
self.assertFalse(self.dw.changed)
self.dw.dc.images.assert_called_once_with()
self.assertEqual(self.fake_data['images'][1], return_data)
def test_compare_image(self): def test_compare_image(self):
self.dw = get_DockerWorker( self.dw = get_DockerWorker(
{'image': 'myregistrydomain.com:5000/ubuntu:16.04'}) {'image': 'myregistrydomain.com:5000/ubuntu:16.04'})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment