1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00
community.general/test/integration/targets/nxos_vlan/tests/common/sanity.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

240 lines
5.3 KiB
YAML

---
- debug: msg="START connection={{ ansible_connection }} nxos_vlan sanity test"
- debug: msg="Using provider={{ connection.transport }}"
when: ansible_connection == "local"
- set_fact: testint1="{{ nxos_int1 }}"
- set_fact: testint2="{{ nxos_int2 }}"
- block:
- name: Install and Enable FabricPath feature set
nxos_config:
lines:
- install feature-set fabricpath
- feature-set fabricpath
provider: "{{ connection }}"
when: platform is search('N5K|N7K')
- name: "Enable feature vn segment"
nxos_config:
commands:
- feature vn-segment-vlan-based
match: none
provider: "{{ connection }}"
when: platform is search('N9K')
- name: vlan teardown
nxos_vlan: &vlan_teardown
vlan_range: "2-200"
provider: "{{ connection }}"
state: absent
ignore_errors: yes
- name: Ensure a range of VLANs are present on the switch
nxos_vlan: &conf_vlan
vlan_range: "2-10,20,50,55-60,100-150"
provider: "{{ connection }}"
register: result
- assert: &true
that:
- "result.changed == true"
- name: "Vlan Idempotence"
nxos_vlan: *conf_vlan
register: result
- assert: &false
that:
- "result.changed == false"
- name: Ensure VLAN 50 exists with the name WEB and is in the shutdown state
nxos_vlan: &web1
vlan_id: 50
vlan_state: suspend
admin_state: down
name: WEB
mapped_vni: 5555
provider: "{{ connection }}"
register: result
when: platform is search('N9K')
- assert: *true
when: platform is search('N9K')
- name: "web1 Idempotence"
nxos_vlan: *web1
register: result
when: platform is search('N9K')
- assert: *false
when: platform is search('N9K')
- name: change name and vni to default
nxos_vlan: &web2
vlan_id: 50
vlan_state: active
admin_state: up
name: default
mapped_vni: default
provider: "{{ connection }}"
register: result
when: platform is search('N9K')
- assert: *true
when: platform is search('N9K')
- name: "web2 Idempotence"
nxos_vlan: *web2
register: result
when: platform is search('N9K')
- assert: *false
when: platform is search('N9K')
- name: Ensure VLAN 50 exists with the name WEB and is in the shutdown state
nxos_vlan: &web3
vlan_id: 50
vlan_state: suspend
admin_state: down
name: WEB
provider: "{{ connection }}"
register: result
when: platform is search('N3K|N7K')
- assert: *true
when: platform is search('N3K|N7K')
- name: "web3 Idempotence"
nxos_vlan: *web3
register: result
when: platform is search('N3K|N7K')
- assert: *false
when: platform is search('N3K|N7K')
- name: Change name to default
nxos_vlan: &web4
vlan_id: 50
vlan_state: active
admin_state: up
name: default
provider: "{{ connection }}"
register: result
when: platform is search('N3K|N7K')
- assert: *true
when: platform is search('N3K|N7K')
- name: "web4 Idempotence"
nxos_vlan: *web4
register: result
when: platform is search('N3K|N7K')
- assert: *false
when: platform is search('N3K|N7K')
- name: Change mode
nxos_vlan: &mode1
vlan_id: 50
mode: fabricpath
provider: "{{ connection }}"
register: result
when: platform is search('N5K|N7K')
- assert: *true
when: platform is search('N5K|N7K')
- name: "mode1 Idempotence"
nxos_vlan: *mode1
register: result
when: platform is search('N5K|N7K')
- assert: *false
when: platform is search('N5K|N7K')
- name: Change mode again
nxos_vlan: &mode2
vlan_id: 50
mode: ce
provider: "{{ connection }}"
register: result
when: platform is search('N5K|N7K')
- assert: *true
when: platform is search('N5K|N7K')
- name: "mode2 Idempotence"
nxos_vlan: *mode2
register: result
when: platform is search('N5K|N7K')
- assert: *false
when: platform is search('N5K|N7K')
- name: Ensure VLAN is NOT on the device
nxos_vlan: &no_vlan
vlan_id: 50
provider: "{{ connection }}"
state: absent
register: result
- assert: *true
- name: "no vlan Idempotence"
nxos_vlan: *no_vlan
register: result
- assert: *false
- name: Add interfaces to vlan
nxos_vlan: &addint
vlan_id: 101
vlan_state: suspend
interfaces:
- "{{ testint1 }}"
- "{{ testint2 }}"
provider: "{{ connection }}"
register: result
- assert: *true
- name: "Addint idempotence"
nxos_vlan: *addint
register: result
- assert: *false
- name: Remove interfaces from vlan
nxos_vlan: &remint
vlan_id: 101
interfaces: default
provider: "{{ connection }}"
register: result
- assert: *true
- name: "Remint idempotence"
nxos_vlan: *remint
register: result
- assert: *false
always:
- name: Remove int from vlan
nxos_vlan: *remint
ignore_errors: yes
- name: vlan teardown final
nxos_vlan: *vlan_teardown
ignore_errors: yes
- name: "Disable feature vn segement"
nxos_feature:
feature: vn-segment-vlan-based
provider: "{{ connection }}"
state: disabled
ignore_errors: yes
when: platform is search('N9K')
- debug: msg="END connection={{ ansible_connection }} nxos_vlan sanity test"