Fix podman healtcheck when not enabled

There was a bug where setting the test command
for the health check to 'NONE' would throw an error
in podman_worker. This was problematic since K-A
uses 'NONE' as an indicator that the health check is not enabled.

Closes-Bug: #2071912
Change-Id: I3140bb79eace58b23f579be3da569c502c52c38c
Signed-off-by: Ivan Halomi <ivan.halomi@tietoevry.com>
This commit is contained in:
Ivan Halomi 2024-07-02 13:52:42 +02:00
parent 4ed5f7537d
commit 59bebd41eb
4 changed files with 35 additions and 1 deletions

View File

@ -104,7 +104,8 @@ class PodmanWorker(ContainerWorker):
if healthcheck:
healthcheck = self.parse_healthcheck(healthcheck)
self.params.pop('healthcheck', None)
args.update(healthcheck)
if healthcheck:
args.update(healthcheck)
# getting dimensions into separate parameters
dimensions = self.params.get('dimensions')

View File

@ -0,0 +1,6 @@
---
fixes:
- |
Fixes podman failure when enable_container_healthchecks
is set to "no".
`LP#2071912 <https://launchpad.net/bugs/2071912>`__

View File

@ -365,6 +365,21 @@ class TestContainer(base.BaseTestCase):
self.dw.dc.create_container.assert_called_once_with(
**{k: self.fake_data['params'][k] for k in expected_args})
def test_create_container_with_None_healthcheck(self):
self.fake_data['params']['healthcheck'] = \
{'test': ['NONE']}
self.dw = get_DockerWorker(self.fake_data['params'])
self.dw.dc.create_host_config = mock.MagicMock(
return_value=self.fake_data['params']['host_config'])
self.dw.create_container()
inject_env_when_create_container(self.fake_data['params'])
self.assertTrue(self.dw.changed)
expected_args = {'command', 'detach', 'environment', 'host_config',
'image', 'labels', 'name', 'tty',
'volumes'}
self.dw.dc.create_container.assert_called_once_with(
**{k: self.fake_data['params'][k] for k in expected_args})
def test_create_container_with_tmpfs(self):
self.fake_data['params']['tmpfs'] = ['/tmp'] # nosec: B108
self.dw = get_DockerWorker(self.fake_data['params'])

View File

@ -246,6 +246,18 @@ class TestContainer(base.BaseTestCase):
self.assertIsNotNone(hc_call)
self.assertEqual(hc, hc_call)
def test_create_container_with_None_healthcheck(self):
hc = {'test': ['NONE']}
self.fake_data['params']['healthcheck'] = hc
self.pw = get_PodmanWorker(self.fake_data['params'].copy())
self.pw.create_container()
self.assertTrue(self.pw.changed)
podman_create_kwargs = self.pw.pc.containers.create.call_args.kwargs
hc_call = podman_create_kwargs.get('healthcheck', None)
self.pw.pc.containers.create.assert_called_once()
self.assertIsNone(hc_call)
@unittest.skip("Skipping because tmpfs is currently"
" not supported by podman API.")
def test_create_container_with_tmpfs(self):