You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/module_defaults/test_defaults.yml

250 lines
7.1 KiB
YAML

- 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
- legacy_ping:
register: legacy_ping_1
module_defaults:
legacy_ping:
data: from task
- legacy_ping:
register: legacy_ping_2
module_defaults:
ansible.legacy.legacy_ping:
data: from task
- ansible.legacy.legacy_ping:
register: legacy_ping_3
module_defaults:
legacy_ping:
data: from task
- ansible.legacy.legacy_ping:
register: legacy_ping_4
module_defaults:
ansible.legacy.legacy_ping:
data: from task
- name: builtin uses legacy defaults
ansible.builtin.debug:
module_defaults:
debug:
msg: legacy default
register: builtin_legacy_defaults_1
- name: builtin uses legacy defaults
ansible.builtin.debug:
module_defaults:
ansible.legacy.debug:
msg: legacy default
register: builtin_legacy_defaults_2
- name: legacy does not use builtin defaults
ansible.legacy.debug:
register: legacy_builtin_defaults
module_defaults:
ansible.builtin.debug:
msg: legacy default
- 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' }"
- "legacy_ping_1.ping == 'from task'"
- "legacy_ping_2.ping == 'from task'"
- "legacy_ping_3.ping == 'from task'"
- "legacy_ping_4.ping == 'from task'"
- "legacy_builtin_defaults.msg == 'Hello world!'"
- "builtin_legacy_defaults_1.msg == 'legacy default'"
- "builtin_legacy_defaults_2.msg == 'legacy default'"
- include_tasks: tasks/main.yml
- name: test preferring module name defaults for platform-specific actions
hosts: localhost
gather_facts: no
tasks:
- name: ensure eosfacts does not use action plugin default
testns.testcoll.eosfacts:
module_defaults:
testns.testcoll.eos:
fail: true
- name: eosfacts does use module name defaults
testns.testcoll.eosfacts:
module_defaults:
testns.testcoll.eosfacts:
eosfacts: true
register: result
- assert:
that:
- result.eosfacts
- result.action_plugin == 'eos'
- name: ensure vyosfacts does not use action plugin default
testns.testcoll.vyosfacts:
module_defaults:
testns.testcoll.vyos:
fail: true
- name: vyosfacts does use vyosfacts defaults
testns.testcoll.vyosfacts:
module_defaults:
testns.testcoll.vyosfacts:
vyosfacts: true
register: result
- assert:
that:
- result.vyosfacts
- result.action_plugin == 'vyos'
- name: iosfacts/ios_facts does not use action plugin default (module action_plugin field has precedence over module-as-action-redirect)
collections:
- testns.testcoll
module_defaults:
testns.testcoll.ios:
fail: true
block:
- ios_facts:
register: result
- assert:
that:
- result.action_plugin == 'ios'
- iosfacts:
register: result
- assert:
that:
- result.action_plugin == 'ios'
- name: ensure iosfacts/ios_facts uses ios_facts defaults
collections:
- testns.testcoll
module_defaults:
testns.testcoll.ios_facts:
ios_facts: true
block:
- ios_facts:
register: result
- assert:
that:
- result.ios_facts
- result.action_plugin == 'ios'
- iosfacts:
register: result
- assert:
that:
- result.ios_facts
- result.action_plugin == 'ios'
- name: ensure iosfacts/ios_facts uses iosfacts defaults
collections:
- testns.testcoll
module_defaults:
testns.testcoll.iosfacts:
ios_facts: true
block:
- ios_facts:
register: result
- assert:
that:
- result.ios_facts
- result.action_plugin == 'ios'
- iosfacts:
register: result
- assert:
that:
- result.ios_facts
- result.action_plugin == 'ios'
- name: ensure redirected action gets redirected action defaults
testns.testcoll.module_uses_action_defaults:
module_defaults:
testns.testcoll.module_uses_action_defaults:
action_option: true
register: result
- assert:
that:
- result.action_option
- result.action_plugin == 'eos'
- name: ensure redirected action gets resolved action defaults
testns.testcoll.module_uses_action_defaults:
module_defaults:
testns.testcoll.eos:
action_option: true
register: result
- assert:
that:
- result.action_option
- result.action_plugin == 'eos'
- name: ensure redirected action does not use module-specific defaults
testns.testcoll.module_uses_action_defaults:
module_defaults:
testns.testcoll.module:
fail: true
register: result
- assert:
that:
- not result.action_option
- result.action_plugin == 'eos'