summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/module_defaults
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-14 20:03:01 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-14 20:03:01 +0000
commita453ac31f3428614cceb99027f8efbdb9258a40b (patch)
treef61f87408f32a8511cbd91799f9cececb53e0374 /test/integration/targets/module_defaults
parentInitial commit. (diff)
downloadansible-upstream.tar.xz
ansible-upstream.zip
Adding upstream version 2.10.7+merged+base+2.10.8+dfsg.upstream/2.10.7+merged+base+2.10.8+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/integration/targets/module_defaults')
-rw-r--r--test/integration/targets/module_defaults/aliases1
-rw-r--r--test/integration/targets/module_defaults/collections/ansible_collections/testns/othercoll/plugins/action/other_echoaction.py8
-rw-r--r--test/integration/targets/module_defaults/collections/ansible_collections/testns/othercoll/plugins/modules/other_echo1.py13
-rw-r--r--test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/meta/runtime.yml9
-rw-r--r--test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/action/echoaction.py19
-rw-r--r--test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/module_utils/echo_impl.py15
-rw-r--r--test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/modules/echo1.py13
-rw-r--r--test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/modules/echo2.py13
-rw-r--r--test/integration/targets/module_defaults/library/test_module_defaults.py30
-rwxr-xr-xtest/integration/targets/module_defaults/runme.sh5
-rw-r--r--test/integration/targets/module_defaults/tasks/main.yml89
-rw-r--r--test/integration/targets/module_defaults/test_defaults.yml60
12 files changed, 275 insertions, 0 deletions
diff --git a/test/integration/targets/module_defaults/aliases b/test/integration/targets/module_defaults/aliases
new file mode 100644
index 00000000..a6dafcf8
--- /dev/null
+++ b/test/integration/targets/module_defaults/aliases
@@ -0,0 +1 @@
+shippable/posix/group1
diff --git a/test/integration/targets/module_defaults/collections/ansible_collections/testns/othercoll/plugins/action/other_echoaction.py b/test/integration/targets/module_defaults/collections/ansible_collections/testns/othercoll/plugins/action/other_echoaction.py
new file mode 100644
index 00000000..f7777b8a
--- /dev/null
+++ b/test/integration/targets/module_defaults/collections/ansible_collections/testns/othercoll/plugins/action/other_echoaction.py
@@ -0,0 +1,8 @@
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+from ansible_collections.testns.testcoll.plugins.action.echoaction import ActionModule as BaseAM
+
+
+class ActionModule(BaseAM):
+ pass
diff --git a/test/integration/targets/module_defaults/collections/ansible_collections/testns/othercoll/plugins/modules/other_echo1.py b/test/integration/targets/module_defaults/collections/ansible_collections/testns/othercoll/plugins/modules/other_echo1.py
new file mode 100644
index 00000000..771395f2
--- /dev/null
+++ b/test/integration/targets/module_defaults/collections/ansible_collections/testns/othercoll/plugins/modules/other_echo1.py
@@ -0,0 +1,13 @@
+#!/usr/bin/python
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+from ansible_collections.testns.testcoll.plugins.module_utils.echo_impl import do_echo
+
+
+def main():
+ do_echo()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/meta/runtime.yml b/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/meta/runtime.yml
new file mode 100644
index 00000000..62695fbc
--- /dev/null
+++ b/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/meta/runtime.yml
@@ -0,0 +1,9 @@
+action_groups:
+ testgroup:
+ - testns.testcoll.echo1
+ - testns.testcoll.echo2
+# note we can define defaults for an action
+ - testns.testcoll.echoaction
+# note we can define defaults in this group for actions/modules in another collection
+ - testns.othercoll.other_echoaction
+ - testns.othercoll.other_echo1
diff --git a/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/action/echoaction.py b/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/action/echoaction.py
new file mode 100644
index 00000000..2fa097b2
--- /dev/null
+++ b/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/action/echoaction.py
@@ -0,0 +1,19 @@
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+from ansible.plugins.action import ActionBase
+
+
+class ActionModule(ActionBase):
+ TRANSFERS_FILES = False
+ _VALID_ARGS = frozenset()
+
+ def run(self, tmp=None, task_vars=None):
+ if task_vars is None:
+ task_vars = dict()
+
+ result = super(ActionModule, self).run(None, task_vars)
+
+ result = dict(changed=False, args_in=self._task.args)
+
+ return result
diff --git a/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/module_utils/echo_impl.py b/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/module_utils/echo_impl.py
new file mode 100644
index 00000000..f5c5d737
--- /dev/null
+++ b/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/module_utils/echo_impl.py
@@ -0,0 +1,15 @@
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+import json
+from ansible.module_utils import basic
+from ansible.module_utils.basic import _load_params, AnsibleModule
+
+
+def do_echo():
+ p = _load_params()
+ d = json.loads(basic._ANSIBLE_ARGS)
+ d['ANSIBLE_MODULE_ARGS'] = {}
+ basic._ANSIBLE_ARGS = json.dumps(d).encode('utf-8')
+ module = AnsibleModule(argument_spec={})
+ module.exit_json(args_in=p)
diff --git a/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/modules/echo1.py b/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/modules/echo1.py
new file mode 100644
index 00000000..771395f2
--- /dev/null
+++ b/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/modules/echo1.py
@@ -0,0 +1,13 @@
+#!/usr/bin/python
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+from ansible_collections.testns.testcoll.plugins.module_utils.echo_impl import do_echo
+
+
+def main():
+ do_echo()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/modules/echo2.py b/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/modules/echo2.py
new file mode 100644
index 00000000..771395f2
--- /dev/null
+++ b/test/integration/targets/module_defaults/collections/ansible_collections/testns/testcoll/plugins/modules/echo2.py
@@ -0,0 +1,13 @@
+#!/usr/bin/python
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+from ansible_collections.testns.testcoll.plugins.module_utils.echo_impl import do_echo
+
+
+def main():
+ do_echo()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test/integration/targets/module_defaults/library/test_module_defaults.py b/test/integration/targets/module_defaults/library/test_module_defaults.py
new file mode 100644
index 00000000..ede8c995
--- /dev/null
+++ b/test/integration/targets/module_defaults/library/test_module_defaults.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+from ansible.module_utils.basic import AnsibleModule
+
+
+def main():
+ module = AnsibleModule(
+ argument_spec=dict(
+ arg1=dict(type='str', default='default1'),
+ arg2=dict(type='str', default='default2'),
+ arg3=dict(type='str', default='default3'),
+ ),
+ supports_check_mode=True
+ )
+
+ result = dict(
+ test_module_defaults=dict(
+ arg1=module.params['arg1'],
+ arg2=module.params['arg2'],
+ arg3=module.params['arg3'],
+ ),
+ )
+
+ module.exit_json(**result)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/test/integration/targets/module_defaults/runme.sh b/test/integration/targets/module_defaults/runme.sh
new file mode 100755
index 00000000..c19e607b
--- /dev/null
+++ b/test/integration/targets/module_defaults/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+
+set -eux
+
+ansible-playbook test_defaults.yml "$@"
diff --git a/test/integration/targets/module_defaults/tasks/main.yml b/test/integration/targets/module_defaults/tasks/main.yml
new file mode 100644
index 00000000..3ed960d3
--- /dev/null
+++ b/test/integration/targets/module_defaults/tasks/main.yml
@@ -0,0 +1,89 @@
+- name: main block
+ vars:
+ test_file: /tmp/ansible-test.module_defaults.foo
+ module_defaults:
+ debug:
+ msg: test default
+ file:
+ path: '{{ test_file }}'
+ block:
+ - debug:
+ register: foo
+
+ - name: test that 'debug' task used default 'msg' param
+ assert:
+ that: foo.msg == "test default"
+
+ - name: remove test file
+ file:
+ state: absent
+
+ - name: touch test file
+ file:
+ state: touch
+
+ - name: stat test file
+ stat:
+ path: '{{ test_file }}'
+ register: foo
+
+ - name: check that test file exists
+ assert:
+ that: foo.stat.exists
+
+ - name: remove test file
+ file:
+ state: absent
+
+ - name: test that module defaults from parent are inherited and merged
+ module_defaults:
+ # Meaningless values to make sure that 'module_defaults' gets
+ # evaluated for this block
+ foo:
+ bar: baz
+ block:
+ - debug:
+ register: foo
+
+ - assert:
+ that: foo.msg == "test default"
+
+ - name: test that we can override module defaults inherited from parent
+ module_defaults:
+ debug:
+ msg: "different test message"
+ block:
+ - debug:
+ register: foo
+
+ - assert:
+ that: foo.msg == "different test message"
+
+ - name: test that module defaults inherited from parent can be removed
+ module_defaults:
+ debug: {}
+ block:
+ - debug:
+ register: foo
+
+ - assert:
+ that:
+ foo.msg == "Hello world!"
+
+ - name: test that module defaults can be overridden by module params
+ block:
+ - debug:
+ msg: another test message
+ register: foo
+
+ - assert:
+ that:
+ foo.msg == "another test message"
+
+ - debug:
+ msg: '{{ omit }}'
+ register: foo
+
+ - assert:
+ that:
+ foo.msg == "Hello world!"
diff --git a/test/integration/targets/module_defaults/test_defaults.yml b/test/integration/targets/module_defaults/test_defaults.yml
new file mode 100644
index 00000000..15b66362
--- /dev/null
+++ b/test/integration/targets/module_defaults/test_defaults.yml
@@ -0,0 +1,60 @@
+- hosts: localhost
+ gather_facts: no
+ collections:
+ - testns.testcoll
+ - testns.othercoll
+ module_defaults:
+ testns.testcoll.echoaction:
+ explicit_module_default: from playbook
+ testns.testcoll.echo1:
+ explicit_module_default: from playbook
+ group/testgroup:
+ group_module_default: from playbook
+ tasks:
+ - testns.testcoll.echoaction:
+ task_arg: from task
+ register: echoaction_fq
+ - echoaction:
+ task_arg: from task
+ register: echoaction_unq
+ - testns.testcoll.echo1:
+ task_arg: from task
+ register: echo1_fq
+ - echo1:
+ task_arg: from task
+ register: echo1_unq
+ - testns.testcoll.echo2:
+ task_arg: from task
+ register: echo2_fq
+ - echo2:
+ task_arg: from task
+ register: echo2_unq
+ - testns.othercoll.other_echoaction:
+ task_arg: from task
+ register: other_echoaction_fq
+ - other_echoaction:
+ task_arg: from task
+ register: other_echoaction_unq
+ - testns.othercoll.other_echo1:
+ task_arg: from task
+ register: other_echo1_fq
+ - other_echo1:
+ task_arg: from task
+ register: other_echo1_unq
+
+ - debug: var=echo1_fq
+
+ - assert:
+ that:
+ - "echoaction_fq.args_in == {'task_arg': 'from task', 'explicit_module_default': 'from playbook', 'group_module_default': 'from playbook' }"
+ - "echoaction_unq.args_in == {'task_arg': 'from task', 'explicit_module_default': 'from playbook', 'group_module_default': 'from playbook' }"
+ - "echo1_fq.args_in == {'task_arg': 'from task', 'explicit_module_default': 'from playbook', 'group_module_default': 'from playbook' }"
+ - "echo1_unq.args_in == {'task_arg': 'from task', 'explicit_module_default': 'from playbook', 'group_module_default': 'from playbook' }"
+ - "echo2_fq.args_in == {'task_arg': 'from task', 'group_module_default': 'from playbook' }"
+ - "echo2_unq.args_in == {'task_arg': 'from task', 'group_module_default': 'from playbook' }"
+ - "other_echoaction_fq.args_in == {'task_arg': 'from task', 'group_module_default': 'from playbook' }"
+ - "other_echoaction_unq.args_in == {'task_arg': 'from task', 'group_module_default': 'from playbook' }"
+ - "other_echo1_fq.args_in == {'task_arg': 'from task', 'group_module_default': 'from playbook' }"
+ - "other_echo1_unq.args_in == {'task_arg': 'from task', 'group_module_default': 'from playbook' }"
+
+ - include_tasks: tasks/main.yml