ansible/test/integration/targets/nxos_vlan/tests/common/agg.yaml
Chris Van Heuveln 6bb13bbb84 nxos_vlan: fix broken purge behavior (issue #57101) (#57229)
* nxos_vlan: fix broken purge behavior (issue #57101)

Symptoms/Analysis:
- `nxos_vlan` `purge: true` would fail when `purge` was trying to delete all unspecified vlans, including vlan 1.
- `nxos` devices do not allow removing vlan 1 and raise a cli exception error
- Previous fix #55144 caused a side effect when `purge` was used: vlan changes specified by `aggregate` were ignored; e.g.
 - vlan 4 is not present; playbook specifies `aggregate: { vlan: 4 }, purge: true`
 - results in proper purging but vlan 4 is not created

Solutions:
- ignore vlan 1 when purging
- remove the `not purge` check from state present logic

Added additional unit tests and integration tests.
Tested against all regression platforms.

* PEP fixes

* Add agg_show_vlan_brief.txt fixture

* Add warning for removing vlan 1

* change method name check
2019-06-04 09:14:09 +05:30

122 lines
2.6 KiB
YAML

---
- debug: msg="START connection={{ ansible_connection }}/agg.yaml"
- debug: msg="Using provider={{ connection.transport }}"
when: ansible_connection == "local"
- name: setup - remove vlan used in test
nxos_config: &rm
lines:
- no vlan 102
- no vlan 103
- no vlan 104
provider: "{{ connection }}"
ignore_errors: yes
- name: configure vlan with aggregate
nxos_vlan: &conf1
aggregate:
- { name: app02, vlan_id: 102 }
- { name: app03, vlan_id: 103 }
vlan_state: active
admin_state: up
provider: "{{ connection }}"
register: result
- assert:
that:
- 'result.changed == true'
- '"vlan 102" in result.commands'
- '"vlan 103" in result.commands'
- '"no shutdown" in result.commands'
- '"state active" in result.commands'
- name: conf1 - Idempotence
nxos_vlan: *conf1
register: result
- assert:
that:
- 'result.changed == false'
- name: change property of existing vlan - admin_state down
nxos_vlan: &conf2
aggregate:
- { name: app02, vlan_id: 102 }
- { name: app03, vlan_id: 103 }
vlan_state: active
admin_state: down
provider: "{{ connection }}"
register: result
- assert:
that:
- 'result.changed == true'
- '"vlan 102" in result.commands'
- '"vlan 103" in result.commands'
- '"shutdown" in result.commands'
- name: conf2 - Idempotence
nxos_vlan: *conf2
register: result
- assert:
that:
- 'result.changed == false'
- name: purge
nxos_vlan: &purge
vlan_id: 1
purge: yes
provider: "{{ connection }}"
register: result
- assert:
that:
- 'result.changed == true'
- '"no vlan 102" in result.commands'
- '"no vlan 103" in result.commands'
- name: purge - Idempotence
nxos_vlan: *purge
register: result
- assert:
that:
- 'result.changed == false'
- name: "setup for purge test with aggregate add"
nxos_vlan:
vlan_id: 104
purge: true
provider: "{{ connection }}"
- name: purge 104 with aggregate add 102-103
nxos_vlan: &purge_add
aggregate:
- { vlan_id: 102 }
- { vlan_id: 103 }
purge: true
provider: "{{ connection }}"
register: result
- assert:
that:
- 'result.changed == true'
- '"vlan 102" in result.commands'
- '"vlan 103" in result.commands'
- '"no vlan 104" in result.commands'
- name: purge_add - Idempotence
nxos_vlan: *purge_add
register: result
- assert:
that:
- 'result.changed == false'
- name: teardown
nxos_config: *rm
ignore_errors: yes
- debug: msg="END connection={{ ansible_connection }}/agg.yaml"