diff options
| author | Jeffrey Zhang <jeffrey.zhang@99cloud.net> | 2016-08-01 13:35:25 +0800 |
|---|---|---|
| committer | Jeffrey Zhang <jeffrey.zhang@99cloud.net> | 2016-08-01 13:41:05 +0800 |
| commit | ae34973d350433ea22d7f0467100193832e6de0f (patch) | |
| tree | 60f9d98e786d4ca47f1cc7dbadd79979d4376d1a | |
| parent | e5ca547f373bdae7207236190422fd18840dd711 (diff) | |
| download | kolla-ae34973d350433ea22d7f0467100193832e6de0f.tar.gz kolla-ae34973d350433ea22d7f0467100193832e6de0f.zip | |
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
| -rw-r--r-- | ansible/library/kolla_docker.py | 5 | ||||
| -rw-r--r-- | tests/test_kolla_docker.py | 22 |
2 files changed, 26 insertions, 1 deletions
diff --git a/ansible/library/kolla_docker.py b/ansible/library/kolla_docker.py index dc542aece..8a079e0f2 100644 --- a/ansible/library/kolla_docker.py +++ b/ansible/library/kolla_docker.py @@ -242,7 +242,10 @@ class DockerWorker(object): def check_image(self): find_image = ':'.join(self.parse_image()) 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: return image diff --git a/tests/test_kolla_docker.py b/tests/test_kolla_docker.py index a05d91edb..f62bb603a 100644 --- a/tests/test_kolla_docker.py +++ b/tests/test_kolla_docker.py @@ -388,6 +388,28 @@ class TestImage(base.BaseTestCase): self.dw.dc.images.assert_called_once_with() 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): self.dw = get_DockerWorker( {'image': 'myregistrydomain.com:5000/ubuntu:16.04'}) |
