aboutsummaryrefslogtreecommitdiff
path: root/ansible/library
diff options
context:
space:
mode:
authorMichal Arbet <michal.arbet@ultimum.io>2023-01-17 13:26:24 +0100
committerMichal Arbet <michal.arbet@ultimum.io>2023-02-04 23:54:47 +0100
commit63b9fa56390796c93c76f3bb121015973663d9e7 (patch)
treed39a88111e9487daeaaf969e5684f687bb1d2fa0 /ansible/library
parentf253f99c1216705cc52e65f6229f8ae42bfda178 (diff)
downloadkolla-ansible-63b9fa56390796c93c76f3bb121015973663d9e7.tar.gz
kolla-ansible-63b9fa56390796c93c76f3bb121015973663d9e7.zip
Fix kolla_docker module
This patch fixes kolla_docker module as it did not take into account common_options parameter. From patchset it's visible that module's default values are used always - even if user overrided some param in common_options dict. Closes-Bug: #2003079 Change-Id: I677fde708dd004decaff4bd39f2173d8d81052fb
Diffstat (limited to 'ansible/library')
-rw-r--r--ansible/library/kolla_docker.py51
1 files changed, 38 insertions, 13 deletions
diff --git a/ansible/library/kolla_docker.py b/ansible/library/kolla_docker.py
index 839cc914f..4b420bd98 100644
--- a/ansible/library/kolla_docker.py
+++ b/ansible/library/kolla_docker.py
@@ -275,7 +275,7 @@ def generate_module():
'start_container',
'stop_container',
'stop_and_remove_container']),
- api_version=dict(required=False, type='str', default='auto'),
+ api_version=dict(required=False, type='str'),
auth_email=dict(required=False, type='str'),
auth_password=dict(required=False, type='str', no_log=True),
auth_registry=dict(required=False, type='str'),
@@ -297,14 +297,14 @@ def generate_module():
cgroupns_mode=dict(required=False, type='str',
choices=['private', 'host']),
privileged=dict(required=False, type='bool', default=False),
- graceful_timeout=dict(required=False, type='int', default=10),
+ graceful_timeout=dict(required=False, type='int'),
remove_on_exit=dict(required=False, type='bool', default=True),
restart_policy=dict(required=False, type='str', choices=[
'no',
'on-failure',
'always',
'unless-stopped']),
- restart_retries=dict(required=False, type='int', default=10),
+ restart_retries=dict(required=False, type='int'),
state=dict(required=False, type='str', default='running',
choices=['running',
'exited',
@@ -318,7 +318,7 @@ def generate_module():
volumes_from=dict(required=False, type='list'),
dimensions=dict(required=False, type='dict', default=dict()),
tty=dict(required=False, type='bool', default=False),
- client_timeout=dict(required=False, type='int', default=120),
+ client_timeout=dict(required=False, type='int'),
ignore_missing=dict(required=False, type='bool', default=False),
)
required_if = [
@@ -344,17 +344,42 @@ def generate_module():
bypass_checks=False
)
- new_args = module.params.pop('common_options', dict())
+ common_options_defaults = {
+ 'auth_email': None,
+ 'auth_password': None,
+ 'auth_registry': None,
+ 'auth_username': None,
+ 'environment': None,
+ 'restart_policy': None,
+ 'restart_retries': 10,
+ 'api_version': 'auto',
+ 'graceful_timeout': 10,
+ 'client_timeout': 120,
+ }
- # NOTE(jeffrey4l): merge the environment
- env = module.params.pop('environment', dict())
- if env:
- new_args['environment'].update(env)
+ new_args = module.params.pop('common_options', dict()) or dict()
+ env_module_environment = module.params.pop('environment', dict()) or dict()
- for key, value in module.params.items():
- if key in new_args and value is None:
- continue
- new_args[key] = value
+ for k, v in module.params.items():
+ if v is None:
+ if k in common_options_defaults:
+ if k in new_args:
+ # From ansible groups vars the common options
+ # can be string or int
+ if isinstance(new_args[k], str) and new_args[k].isdigit():
+ new_args[k] = int(new_args[k])
+ continue
+ else:
+ if common_options_defaults[k] is not None:
+ new_args[k] = common_options_defaults[k]
+ else:
+ continue
+ if v is not None:
+ new_args[k] = v
+
+ env_module_common_options = new_args.pop('environment', dict()) or dict()
+ new_args['environment'] = env_module_common_options
+ new_args['environment'].update(env_module_environment)
# if pid_mode = ""/None/False, remove it
if not new_args.get('pid_mode', False):