diff --git a/lib/ansible/module_utils/network/common/utils.py b/lib/ansible/module_utils/network/common/utils.py index 75fcc8759f9..299608cc8a6 100644 --- a/lib/ansible/module_utils/network/common/utils.py +++ b/lib/ansible/module_utils/network/common/utils.py @@ -260,7 +260,10 @@ def dict_diff(base, comparable): if not isinstance(base, dict): raise AssertionError("`base` must be of type ") if not isinstance(comparable, dict): - raise AssertionError("`comparable` must be of type ") + if comparable is None: + comparable = dict() + else: + raise AssertionError("`comparable` must be of type ") updates = dict() diff --git a/lib/ansible/module_utils/network/nxos/config/lacp/lacp.py b/lib/ansible/module_utils/network/nxos/config/lacp/lacp.py index 8d4f24585a9..ebed2501845 100644 --- a/lib/ansible/module_utils/network/nxos/config/lacp/lacp.py +++ b/lib/ansible/module_utils/network/nxos/config/lacp/lacp.py @@ -130,9 +130,11 @@ class Lacp(ConfigBase): del diff[k] deleted_commands = self.del_all(diff) merged_commands = self._state_merged(want, have) + + commands.extend(deleted_commands) if merged_commands: - commands.extend(deleted_commands) commands.extend(merged_commands) + return commands def _state_merged(self, want, have): diff --git a/test/integration/targets/nxos_lacp/tests/cli/deleted.yaml b/test/integration/targets/nxos_lacp/tests/cli/deleted.yaml index d3711a55f50..a9e158e69d3 100644 --- a/test/integration/targets/nxos_lacp/tests/cli/deleted.yaml +++ b/test/integration/targets/nxos_lacp/tests/cli/deleted.yaml @@ -6,11 +6,19 @@ nxos_feature: feature: lacp +- set_fact: + mac: "lacp system-mac 00c1.4c00.bd15 role primary" + when: platform is search('N9K') and imagetag is not search('I[2-6]') + - block: - name: Setup cli_config: config: lacp system-priority 11 + - name: Setup + cli_config: + config: "{{ mac|default(omit) }}" + - name: Gather lacp facts nxos_facts: &facts gather_subset: @@ -29,6 +37,16 @@ - "'no lacp system-priority' in result.commands" - "result.changed == true" - "result.commands|length == 1" + when: platform is not search('N9K') + + - assert: + that: + - "ansible_facts.network_resources.lacp == result.before" + - "'no lacp system-priority' in result.commands" + - "'no lacp system-mac' in result.commands" + - "result.changed == true" + - "result.commands|length == 2" + when: platform is search('N9K') and imagetag is not search('I[2-6]') - name: Gather lacp post facts nxos_facts: *facts diff --git a/test/integration/targets/nxos_lacp/tests/cli/merged.yaml b/test/integration/targets/nxos_lacp/tests/cli/merged.yaml index 0e7423b8db9..45a5bed1db4 100644 --- a/test/integration/targets/nxos_lacp/tests/cli/merged.yaml +++ b/test/integration/targets/nxos_lacp/tests/cli/merged.yaml @@ -6,21 +6,38 @@ nxos_feature: feature: lacp +- set_fact: + mac: + address: 00c1.4c00.bd15 + role: primary + when: platform is search('N9K') and imagetag is not search('I[2-6]') + - block: - name: Merged nxos_lacp: &merged config: system: priority: 11 + mac: "{{ mac|default(omit) }}" state: merged register: result + - assert: + that: + - "result.before|length == 0" + - "result.changed == true" + - "'lacp system-priority 11' in result.commands" + - "'lacp system-mac 00c1.4c00.bd15 role primary' in result.commands" + - "result.commands|length == 2" + when: platform is search('N9K') and imagetag is not search('I[2-6]') + - assert: that: - "result.before|length == 0" - "result.changed == true" - "'lacp system-priority 11' in result.commands" - "result.commands|length == 1" + when: platform is not search('N9K') - name: Gather lacp facts nxos_facts: diff --git a/test/integration/targets/nxos_lacp/tests/cli/replaced.yaml b/test/integration/targets/nxos_lacp/tests/cli/replaced.yaml index 1e9470fec7f..7b367a79580 100644 --- a/test/integration/targets/nxos_lacp/tests/cli/replaced.yaml +++ b/test/integration/targets/nxos_lacp/tests/cli/replaced.yaml @@ -1,4 +1,5 @@ --- + - debug: msg: "Start nxos_lacp replaced integration tests connection={{ ansible_connection }}" @@ -6,11 +7,25 @@ nxos_feature: feature: lacp +- set_fact: + mac1: "lacp system-mac 00c1.4c00.bd20 role primary" + when: platform is search('N9K') and imagetag is not search('I[2-6]') + +- set_fact: + mac2: + address: 00c1.4c00.bd15 + role: secondary + when: platform is search('N9K') and imagetag is not search('I[2-6]') + - block: - - name: Setup + - name: Setup1 cli_config: config: lacp system-priority 11 + - name: Setup2 + cli_config: + config: "{{ mac1|default(omit) }}" + - name: Gather lacp facts nxos_facts: &facts gather_subset: @@ -22,9 +37,8 @@ nxos_lacp: &replaced config: system: - mac: - address: 00c1.4c00.bd15 - role: primary + priority: 12 + mac: "{{ mac2|default(omit) }}" state: replaced register: result @@ -32,9 +46,21 @@ that: - "ansible_facts.network_resources.lacp == result.before" - "result.changed == true" - - "'no lacp system-priority' in result.commands" - - "'lacp system-mac 00c1.4c00.bd15 role primary' in result.commands" - "result.commands|length == 2" + - "'no lacp system-priority' in result.commands" + - "'lacp system-priority 12' in result.commands" + when: platform is not search('N9K') + + - assert: + that: + - "ansible_facts.network_resources.lacp == result.before" + - "result.changed == true" + - "'no lacp system-priority' in result.commands" + - "'no lacp system-mac' in result.commands" + - "'lacp system-priority 12' in result.commands" + - "'lacp system-mac 00c1.4c00.bd15 role secondary' in result.commands" + - "result.commands|length == 4" + when: platform is search('N9K') and imagetag is not search('I[2-6]') - name: Gather lacp interfaces post facts nxos_facts: *facts @@ -42,6 +68,7 @@ - assert: that: - "ansible_facts.network_resources.lacp == result.after" + when: platform is search('N9K') and imagetag is not search('I[2-6]') - name: Idempotence - Replaced nxos_lacp: *replaced @@ -52,6 +79,24 @@ - "result.changed == false" - "result.commands|length == 0" + - name: Setup3 + cli_config: + config: "{{ mac1|default(omit) }}" + + - name: Replaced + nxos_lacp: + state: replaced + register: result + when: platform is search('N9K') and imagetag is not search('I[2-6]') + + - assert: + that: + - "result.changed == true" + - "result.commands|length == 2" + - "'no lacp system-mac' in result.commands" + - "'no lacp system-priority' in result.commands" + when: platform is search('N9K') and imagetag is not search('I[2-6]') + always: - name: teardown nxos_feature: