diff --git a/lib/ansible/modules/network/eos/eos_config.py b/lib/ansible/modules/network/eos/eos_config.py index 5ad3fb52027..17722f161ec 100644 --- a/lib/ansible/modules/network/eos/eos_config.py +++ b/lib/ansible/modules/network/eos/eos_config.py @@ -410,7 +410,7 @@ def main(): result['changed'] = True - running_config = None + running_config = module.params['running_config'] startup_config = None diff_ignore_lines = module.params['diff_ignore_lines'] @@ -435,7 +435,7 @@ def main(): output = run_commands(module, {'command': 'show running-config', 'output': 'text'}) contents = output[0] else: - contents = running_config.config_text + contents = running_config # recreate the object in order to process diff_ignore_lines running_config = NetworkConfig(indent=1, contents=contents, ignore_lines=diff_ignore_lines) diff --git a/lib/ansible/modules/network/ios/ios_config.py b/lib/ansible/modules/network/ios/ios_config.py index 79efd260260..54a664e295a 100644 --- a/lib/ansible/modules/network/ios/ios_config.py +++ b/lib/ansible/modules/network/ios/ios_config.py @@ -493,7 +493,7 @@ def main(): result['changed'] = True - running_config = None + running_config = module.params['running_config'] startup_config = None diff_ignore_lines = module.params['diff_ignore_lines'] @@ -516,7 +516,7 @@ def main(): output = run_commands(module, 'show running-config') contents = output[0] else: - contents = running_config.config_text + contents = running_config # recreate the object in order to process diff_ignore_lines running_config = NetworkConfig(indent=1, contents=contents, ignore_lines=diff_ignore_lines) diff --git a/lib/ansible/modules/network/nxos/nxos_config.py b/lib/ansible/modules/network/nxos/nxos_config.py index e67a93fc816..e52ada0f944 100644 --- a/lib/ansible/modules/network/nxos/nxos_config.py +++ b/lib/ansible/modules/network/nxos/nxos_config.py @@ -444,7 +444,7 @@ def main(): result['changed'] = True - running_config = None + running_config = module.params['running_config'] startup_config = None diff_ignore_lines = module.params['diff_ignore_lines'] @@ -467,7 +467,7 @@ def main(): output = execute_show_commands(module, 'show running-config') contents = output[0] else: - contents = running_config.config_text + contents = running_config # recreate the object in order to process diff_ignore_lines running_config = NetworkConfig(indent=1, contents=contents, ignore_lines=diff_ignore_lines) diff --git a/test/integration/targets/ios_config/templates/basic/base_running_config b/test/integration/targets/ios_config/templates/basic/base_running_config new file mode 100644 index 00000000000..37254dc9634 --- /dev/null +++ b/test/integration/targets/ios_config/templates/basic/base_running_config @@ -0,0 +1,9 @@ +version 15.6 +service timestamps debug datetime msec +service timestamps log datetime msec +no service password-encryption +! +hostname an-ios-01.ansible.com +! +boot-start-marker +boot-end-marker diff --git a/test/integration/targets/ios_config/templates/basic/intended_running_config b/test/integration/targets/ios_config/templates/basic/intended_running_config new file mode 100644 index 00000000000..bdad8d3d8b0 --- /dev/null +++ b/test/integration/targets/ios_config/templates/basic/intended_running_config @@ -0,0 +1,9 @@ +version 15.6 +service timestamps debug datetime msec +service timestamps log datetime msec +no service password-encryption +! +hostname an-ios-02.ansible.com +! +boot-start-marker +boot-end-marker diff --git a/test/integration/targets/ios_config/tests/cli/diff.yaml b/test/integration/targets/ios_config/tests/cli/diff.yaml new file mode 100644 index 00000000000..9121f55fba2 --- /dev/null +++ b/test/integration/targets/ios_config/tests/cli/diff.yaml @@ -0,0 +1,29 @@ +--- +- debug: msg="START cli/diff.yaml on connection={{ ansible_connection }}" + +- name: ios_config diff against retrieved config + ios_config: + diff_against: intended + intended_config: "{{ lookup('file', '{{ role_path }}/templates/basic/intended_running_config') }}" + diff: true + register: result + +- assert: + that: + - "'hostname an-ios-02.ansible.com' in result['diff']['after']" + - "'hostname {{ shorter_hostname }}' in result['diff']['before']" + +- name: ios_config diff against provided running_config + ios_config: + diff_against: intended + intended_config: "{{ lookup('file', '{{ role_path }}/templates/basic/intended_running_config') }}" + running_config: "{{ lookup('file', '{{ role_path }}/templates/basic/base_running_config') }}" + diff: true + register: result + +- assert: + that: + - "'hostname an-ios-02.ansible.com' in result['diff']['after']" + - "'hostname an-ios-01.ansible.com' in result['diff']['before']" + +- debug: msg="END cli/diff.yaml on connection={{ ansible_connection }}" diff --git a/test/integration/targets/nxos_config/templates/basic/base_running_config b/test/integration/targets/nxos_config/templates/basic/base_running_config new file mode 100644 index 00000000000..563371d9d0b --- /dev/null +++ b/test/integration/targets/nxos_config/templates/basic/base_running_config @@ -0,0 +1,10 @@ +version 7.0(3)I6(1) +hostname an-nxos9k-02.ansible.com +vdc an-nxos9k-02 id 1 + limit-resource vlan minimum 16 maximum 4094 + limit-resource vrf minimum 2 maximum 4096 + limit-resource port-channel minimum 0 maximum 511 + limit-resource u4route-mem minimum 96 maximum 96 + limit-resource u6route-mem minimum 24 maximum 24 + limit-resource m4route-mem minimum 58 maximum 58 + limit-resource m6route-mem minimum 8 maximum 8 diff --git a/test/integration/targets/nxos_config/templates/basic/intended_running_config b/test/integration/targets/nxos_config/templates/basic/intended_running_config new file mode 100644 index 00000000000..ab96584bf35 --- /dev/null +++ b/test/integration/targets/nxos_config/templates/basic/intended_running_config @@ -0,0 +1,10 @@ +version 7.0(3)I6(1) +hostname an-nxos9k-01.ansible.com +vdc an-nxos9k-01 id 1 + limit-resource vlan minimum 16 maximum 4094 + limit-resource vrf minimum 2 maximum 4096 + limit-resource port-channel minimum 0 maximum 511 + limit-resource u4route-mem minimum 96 maximum 96 + limit-resource u6route-mem minimum 24 maximum 24 + limit-resource m4route-mem minimum 58 maximum 58 + limit-resource m6route-mem minimum 8 maximum 8 diff --git a/test/integration/targets/nxos_config/tests/cli/diff.yaml b/test/integration/targets/nxos_config/tests/cli/diff.yaml new file mode 100644 index 00000000000..21c164bd73f --- /dev/null +++ b/test/integration/targets/nxos_config/tests/cli/diff.yaml @@ -0,0 +1,33 @@ +--- +- debug: msg="START cli/diff.yaml on connection={{ ansible_connection }}" + +- name: setup hostname + nxos_config: + lines: hostname switch + +- name: nxos_config diff against retrieved config + nxos_config: + diff_against: intended + intended_config: "{{ lookup('file', '{{ role_path }}/templates/basic/intended_running_config') }}" + diff: true + register: result + +- assert: + that: + - "'hostname an-nxos9k-01.ansible.com' in result['diff']['after']" + - "'hostname switch' in result['diff']['before']" + +- name: nxos_config diff against provided running_config + nxos_config: + diff_against: intended + intended_config: "{{ lookup('file', '{{ role_path }}/templates/basic/intended_running_config') }}" + running_config: "{{ lookup('file', '{{ role_path }}/templates/basic/base_running_config') }}" + diff: true + register: result + +- assert: + that: + - "'hostname an-nxos9k-01.ansible.com' in result['diff']['after']" + - "'hostname an-nxos9k-02.ansible.com' in result['diff']['before']" + +- debug: msg="END cli/diff.yaml on connection={{ ansible_connection }}"