mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
6bb13bbb84
* 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
240 lines
5.3 KiB
YAML
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"
|