aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Nasiadka <mnasiadka@gmail.com>2023-03-23 13:39:05 +0100
committerMichal Nasiadka <mnasiadka@gmail.com>2023-03-23 16:18:34 +0000
commitcdcf622018f6ea59c1fb9fe5e9cc3a31526cc3f3 (patch)
tree503625414cf866b8057e0aa72684a63683ca62c8
parent2845861ef9b48854f97a233b8af32b0cc0e8ade2 (diff)
downloadkolla-ansible-cdcf622018f6ea59c1fb9fe5e9cc3a31526cc3f3.tar.gz
kolla-ansible-cdcf622018f6ea59c1fb9fe5e9cc3a31526cc3f3.zip
Fix restart_container when restart_policy is no
Closes-Bug: #2012654 Change-Id: I9735b4409a48d80851cbc26a9edbf370af1d45bf
-rw-r--r--ansible/module_utils/kolla_docker_worker.py17
-rw-r--r--tests/kolla_docker_tests/test_docker_worker.py18
2 files changed, 28 insertions, 7 deletions
diff --git a/ansible/module_utils/kolla_docker_worker.py b/ansible/module_utils/kolla_docker_worker.py
index 6d6408101..72400ea20 100644
--- a/ansible/module_utils/kolla_docker_worker.py
+++ b/ansible/module_utils/kolla_docker_worker.py
@@ -469,13 +469,16 @@ class DockerWorker(ContainerWorker):
msg="No such container: {}".format(name))
else:
self.changed = True
- self.systemd.create_unit_file()
-
- if not self.systemd.restart():
- self.module.fail_json(
- changed=True,
- msg="Container timed out",
- **self.check_container())
+ if self.params.get('restart_policy') != 'no':
+ self.systemd.create_unit_file()
+ if not self.systemd.restart():
+ self.module.fail_json(
+ changed=True,
+ msg="Container timed out",
+ **self.check_container())
+ else:
+ self.dc.stop(name, timeout=graceful_timeout)
+ self.dc.start(name)
def create_volume(self):
if not self.check_volume():
diff --git a/tests/kolla_docker_tests/test_docker_worker.py b/tests/kolla_docker_tests/test_docker_worker.py
index a7fa775f5..2c5efd716 100644
--- a/tests/kolla_docker_tests/test_docker_worker.py
+++ b/tests/kolla_docker_tests/test_docker_worker.py
@@ -617,6 +617,24 @@ class TestContainer(base.BaseTestCase):
self.dw.dc.containers.assert_called_once_with(all=True)
self.dw.systemd.restart.assert_called_once_with()
+ def test_restart_container_no_systemd(self):
+ self.dw = get_DockerWorker({'name': 'my_container',
+ 'action': 'stop_container',
+ 'restart_policy': 'no'})
+ self.dw.dc.containers.return_value = self.fake_data['containers']
+ self.fake_data['container_inspect'].update(
+ self.fake_data['containers'][0])
+ self.dw.dc.inspect_container.return_value = (
+ self.fake_data['container_inspect'])
+ self.dw.restart_container()
+
+ self.assertTrue(self.dw.changed)
+ self.dw.dc.containers.assert_called_once_with(all=True)
+ self.dw.dc.stop.assert_called_once_with(
+ 'my_container', timeout=10)
+ self.dw.dc.start.assert_called_once_with('my_container')
+ self.dw.module.fail_json.assert_not_called()
+
def test_restart_container_not_exists(self):
self.dw = get_DockerWorker({'name': 'fake-container',
'action': 'restart_container'})