aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ansible/module_utils/kolla_podman_worker.py8
-rw-r--r--tests/kolla_container_tests/test_podman_worker.py18
2 files changed, 24 insertions, 2 deletions
diff --git a/ansible/module_utils/kolla_podman_worker.py b/ansible/module_utils/kolla_podman_worker.py
index 66e5bba1b..0b9e25ef8 100644
--- a/ansible/module_utils/kolla_podman_worker.py
+++ b/ansible/module_utils/kolla_podman_worker.py
@@ -538,8 +538,12 @@ class PodmanWorker(ContainerWorker):
if rc == 0:
return False
elif rc == 1:
- self._config_diff = (raw_output.decode('utf-8') if
- isinstance(raw_output, bytes) else raw_output)
+ try:
+ self._config_diff = (raw_output.decode('utf-8') if
+ isinstance(raw_output, bytes) else
+ raw_output)
+ except UnicodeDecodeError:
+ self._config_diff = 'container changed during config check'
return True
else:
raise Exception('Failed to compare container configuration: '
diff --git a/tests/kolla_container_tests/test_podman_worker.py b/tests/kolla_container_tests/test_podman_worker.py
index 55ab5c165..048a7a797 100644
--- a/tests/kolla_container_tests/test_podman_worker.py
+++ b/tests/kolla_container_tests/test_podman_worker.py
@@ -766,6 +766,24 @@ class TestImage(base.BaseTestCase):
user='root')
self.assertTrue(return_data)
+ def test_compare_config_chenged_unicode_error(self):
+ self.fake_data['params']['name'] = 'my_container'
+ self.pw = get_PodmanWorker(self.fake_data['params'])
+ my_container = construct_container(self.fake_data['containers'][0])
+ invalid_bytes = b'\x8e\xfe\xfd'
+ my_container.exec_run = mock.Mock(return_value=(1, invalid_bytes))
+ self.pw.pc.containers.get.return_value = my_container
+
+ return_data = self.pw.compare_config()
+ self.pw.pc.containers.get.assert_called_once_with(
+ self.fake_data['params']['name'])
+ my_container.exec_run.assert_called_once_with(
+ pwm.COMPARE_CONFIG_CMD,
+ user='root')
+ self.assertTrue(return_data)
+ self.assertEqual(self.pw._config_diff,
+ 'container changed during config check')
+
def test_compare_config_changed_container_exited(self):
self.fake_data['params']['name'] = 'my_container'
self.pw = get_PodmanWorker(self.fake_data['params'])