Allow healthcheck override without test option (#847)

* Add healthcheck test_cli_compatible option

* Update plugins/module_utils/util.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/docker_container.py

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
x4rd0o1Vtx
2024-05-15 18:45:01 +02:00
committed by GitHub
parent 2eb2c9febf
commit 5016a96eba
5 changed files with 17 additions and 4 deletions
@@ -935,6 +935,7 @@ OPTION_HEALTHCHECK = (
OptionGroup(preprocess=_preprocess_healthcheck)
.add_option('healthcheck', type='dict', ansible_suboptions=dict(
test=dict(type='raw'),
test_cli_compatible=dict(type='bool', default=False),
interval=dict(type='str'),
timeout=dict(type='str'),
start_period=dict(type='str'),
@@ -746,7 +746,7 @@ def _preprocess_etc_hosts(module, client, api_version, value):
def _preprocess_healthcheck(module, client, api_version, value):
if value is None:
return value
if not value or not value.get('test'):
if not value or not (value.get('test') or (value.get('test_cli_compatible') and value.get('test') is None)):
value = {'test': ['NONE']}
elif 'test' in value:
value['test'] = normalize_healthcheck_test(value['test'])
+3 -3
View File
@@ -353,7 +353,7 @@ def normalize_healthcheck(healthcheck, normalize_test=False):
result = dict()
# All supported healthcheck parameters
options = ('test', 'interval', 'timeout', 'start_period', 'start_interval', 'retries')
options = ('test', 'test_cli_compatible', 'interval', 'timeout', 'start_period', 'start_interval', 'retries')
duration_options = ('interval', 'timeout', 'start_period', 'start_interval')
@@ -366,7 +366,7 @@ def normalize_healthcheck(healthcheck, normalize_test=False):
continue
if key in duration_options:
value = convert_duration_to_nanosecond(value)
if not value:
if not value and not (healthcheck.get('test_cli_compatible') and key == 'test'):
continue
if key == 'retries':
try:
@@ -376,7 +376,7 @@ def normalize_healthcheck(healthcheck, normalize_test=False):
'Cannot parse number of retries for healthcheck. '
'Expected an integer, got "{0}".'.format(value)
)
if key == 'test' and normalize_test:
if key == 'test' and value and normalize_test:
value = normalize_healthcheck_test(value)
result[key] = value