aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Zhang <jeffrey.zhang@99cloud.net>2016-08-01 13:35:25 +0800
committerJeffrey Zhang <jeffrey.zhang@99cloud.net>2016-08-01 13:41:05 +0800
commitae34973d350433ea22d7f0467100193832e6de0f (patch)
tree60f9d98e786d4ca47f1cc7dbadd79979d4376d1a
parente5ca547f373bdae7207236190422fd18840dd711 (diff)
downloadkolla-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.py5
-rw-r--r--tests/test_kolla_docker.py22
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'})