aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ansible/module_utils/kolla_container_worker.py5
-rw-r--r--ansible/module_utils/kolla_docker_worker.py1
-rw-r--r--releasenotes/notes/bug-1889611-a89ddb10134081f4.yaml7
-rw-r--r--tests/kolla_container_tests/test_docker_worker.py6
-rw-r--r--tests/kolla_container_tests/test_podman_worker.py6
5 files changed, 24 insertions, 1 deletions
diff --git a/ansible/module_utils/kolla_container_worker.py b/ansible/module_utils/kolla_container_worker.py
index 4c7bedffc..bf0c20b25 100644
--- a/ansible/module_utils/kolla_container_worker.py
+++ b/ansible/module_utils/kolla_container_worker.py
@@ -316,7 +316,10 @@ class ContainerWorker(ABC):
def compare_labels(self, container_info):
new_labels = self.params.get('labels')
current_labels = container_info['Config'].get('Labels', dict())
- image_labels = self.check_image().get('Labels', dict())
+ image_info = self.check_image()
+ if not image_info:
+ return False
+ image_labels = image_info.get('Labels', dict())
for k, v in image_labels.items():
if k in new_labels:
if v != new_labels[k]:
diff --git a/ansible/module_utils/kolla_docker_worker.py b/ansible/module_utils/kolla_docker_worker.py
index 70b6af39b..f488bab66 100644
--- a/ansible/module_utils/kolla_docker_worker.py
+++ b/ansible/module_utils/kolla_docker_worker.py
@@ -77,6 +77,7 @@ class DockerWorker(ContainerWorker):
for image_name in repo_tags:
if image_name == find_image:
return image
+ return dict()
def check_volume(self):
for vol in self.dc.volumes()['Volumes'] or list():
diff --git a/releasenotes/notes/bug-1889611-a89ddb10134081f4.yaml b/releasenotes/notes/bug-1889611-a89ddb10134081f4.yaml
new file mode 100644
index 000000000..05cce09d8
--- /dev/null
+++ b/releasenotes/notes/bug-1889611-a89ddb10134081f4.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+ - |
+ Fixes image check with containers that don't exist locally. A bug in the
+ image comparison logic would make service-check-containers fail with
+ ``AttributeError: NoneType object has no attribute get``
+ `LP#2166024 <https://launchpad.net/bugs/2166024>`__
diff --git a/tests/kolla_container_tests/test_docker_worker.py b/tests/kolla_container_tests/test_docker_worker.py
index cd351e4ef..e32da66cb 100644
--- a/tests/kolla_container_tests/test_docker_worker.py
+++ b/tests/kolla_container_tests/test_docker_worker.py
@@ -1251,6 +1251,12 @@ class TestAttrComp(base.BaseTestCase):
self.dw = get_DockerWorker({'privileged': False})
self.assertTrue(self.dw.compare_privileged(container_info))
+ def test_compare_labels_image_missing(self):
+ container_info = {'Config': dict(Labels={'kolla_version': '1.0.1'})}
+ self.dw = get_DockerWorker({'labels': {}})
+ self.dw.check_image = mock.MagicMock(return_value=dict())
+ self.assertFalse(self.dw.compare_labels(container_info))
+
def test_compare_labels_neg(self):
container_info = {'Config': dict(Labels={'kolla_version': '2.0.1'})}
self.dw = get_DockerWorker({'labels': {'kolla_version': '2.0.1'}})
diff --git a/tests/kolla_container_tests/test_podman_worker.py b/tests/kolla_container_tests/test_podman_worker.py
index 048a7a797..04d6d987b 100644
--- a/tests/kolla_container_tests/test_podman_worker.py
+++ b/tests/kolla_container_tests/test_podman_worker.py
@@ -1264,6 +1264,12 @@ class TestAttrComp(base.BaseTestCase):
self.pw = get_PodmanWorker({'privileged': False})
self.assertTrue(self.pw.compare_privileged(container_info))
+ def test_compare_labels_image_missing(self):
+ container_info = {'Config': dict(Labels={'kolla_version': '1.0.1'})}
+ self.pw = get_PodmanWorker({'labels': {}})
+ self.pw.check_image = mock.MagicMock(return_value=dict())
+ self.assertFalse(self.pw.compare_labels(container_info))
+
def test_compare_labels_neg(self):
container_info = {'Config': dict(Labels={'kolla_version': '2.0.1'})}
self.pw = get_PodmanWorker({'labels': {'kolla_version': '2.0.1'}})