diff --git a/changelogs/fragments/handle_src_backup_with_module_alias.yaml b/changelogs/fragments/handle_src_backup_with_module_alias.yaml new file mode 100644 index 00000000..d0f901aa --- /dev/null +++ b/changelogs/fragments/handle_src_backup_with_module_alias.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - Make `src`, `backup` and `backup_options` in iosxr_config work when module alias is used (https://github.com/ansible-collections/cisco.iosxr/pull/63). diff --git a/plugins/action/iosxr.py b/plugins/action/iosxr.py index b34340ac..2d5819bc 100644 --- a/plugins/action/iosxr.py +++ b/plugins/action/iosxr.py @@ -42,7 +42,9 @@ def run(self, tmp=None, task_vars=None): del tmp # tmp no longer has any effect module_name = self._task.action.split(".")[-1] - self._config_module = True if module_name == "iosxr_config" else False + self._config_module = ( + True if module_name in ["iosxr_config", "config"] else False + ) force_cli = module_name in ( "iosxr_netconf", "iosxr_config", diff --git a/tests/integration/targets/iosxr_config/tasks/main.yaml b/tests/integration/targets/iosxr_config/tasks/main.yaml index 2bac6dc2..5604e9eb 100644 --- a/tests/integration/targets/iosxr_config/tasks/main.yaml +++ b/tests/integration/targets/iosxr_config/tasks/main.yaml @@ -1,3 +1,6 @@ --- - include: cli.yaml - include: cli_config.yaml + +- include: redirection.yaml + when: ansible_version.full is version('2.10.0', '>=') diff --git a/tests/integration/targets/iosxr_config/tasks/redirection.yaml b/tests/integration/targets/iosxr_config/tasks/redirection.yaml new file mode 100644 index 00000000..6282ad40 --- /dev/null +++ b/tests/integration/targets/iosxr_config/tasks/redirection.yaml @@ -0,0 +1,16 @@ +--- +- name: collect all redirection cli test cases + find: + paths: '{{ role_path }}/tests/redirection' + patterns: '{{ testcase }}.yaml' + register: shortname_test_cases + delegate_to: localhost + +- name: set test_items for redirection + set_fact: test_items="{{ shortname_test_cases.files | map(attribute='path') | list }}" + +- name: run test case (connection=ansible.netcommon.network_cli) + include: '{{ test_case_to_run }} ansible_connection=ansible.netcommon.network_cli' + with_items: '{{ test_items }}' + loop_control: + loop_var: test_case_to_run diff --git a/tests/integration/targets/iosxr_config/tests/redirection/shortname.yaml b/tests/integration/targets/iosxr_config/tests/redirection/shortname.yaml new file mode 100644 index 00000000..337140ae --- /dev/null +++ b/tests/integration/targets/iosxr_config/tests/redirection/shortname.yaml @@ -0,0 +1,37 @@ +--- +- debug: msg="START redirection/shortname.yaml on connection={{ ansible_connection }}" + +- name: Use src with module alias + register: result + cisco.iosxr.config: + src: basic/config.j2 + +- assert: + that: + # make sure that the template content was read and not the path + - result.changed == true + - result.updates is defined + +- name: use module alias to take configuration backup + register: result + cisco.iosxr.config: + backup: true + backup_options: + filename: backup_with_alias.cfg + dir_path: '{{ role_path }}/backup_test_dir/{{ inventory_hostname_short }}' + +- assert: + that: + - result.changed == true + +- name: check if the backup file-4 exist + find: + paths: '{{ role_path }}/backup_test_dir/{{ inventory_hostname_short }}/backup_with_alias.cfg' + register: backup_file + connection: local + +- assert: + that: + - backup_file.files is defined + +- debug: msg="END redirection/shortname.yaml on connection={{ ansible_connection }}"