ansible/test/integration/targets/nxos_vpc/tests/common/sanity.yaml
Chris Van Heuveln 1554befd95 nxos_vpc:Fix multiple idempotency issues, add missing commands (#55735)
* nxos_vpc:Fix idempotency issues with multiple attributes

Several attributes were causing idempotency problems on various platforms:

- `auto_recovery`
 - This command can be disabled on certain platforms and will nvgen as `no auto-recovery`
 - When enabled it has an additional optional-keyword for changing the `reload-delay` timer value
  - This was addressed by adding a new attribute `auto_recovery_reload_delay` to handle setting the timer value
  - This new attribute is mutually exclusive with `auto_recovery`

- `/show run vpc/show run vpc all/`
 - Changed the command that gets state to `all` so that it could differentiate between `auto-recovery` and `auto-recovery reload-delay`
 - This change resulted in also changing some attribute handling withing `get_vpc`, since some attributes like `peer_gw` relied on presence of the config to determine state true or false. With `all` the config is always there so these attrs must specifically check for `'no '` in the string.

- `delay_restore`
 - This command has two additional, optional keywords that exist on some platforms and not others.
 - New attrs:
  - `delay_restore_interface_vlan`
  - `delay_restore_orphan_port`

- Modified the `sanity` test to include the new attributes and to fix the platform issues.

- Bugfix Pull Request

`modules/network/nxos/nxos_vpc.py`

- Validated `nxos_vpc` `sanity` test on these platforms, all are now 100% Pass: N35, N3K, N3K-F, N6K, N7K, N9K, N9K-F

- TBD: Future work is needed to add support for `peer_gw_exclude_gw` timers. This could be addressed in the same way as the `auto_recovery_reload_delay` changes included here.

* lint fix

* Add 'version_added' tags for new options
2019-05-10 13:17:02 +05:30

193 lines
4.3 KiB
YAML

---
- debug: msg="START connection={{ ansible_connection }} nxos_vpc sanity test"
- debug: msg="Using provider={{ connection.transport }}"
when: ansible_connection == "local"
- block:
- set_fact: delay_restore_orphan_port=25
- set_fact: def_delay_restore_orphan_port=default
when: platform is not search("N35|N5K|N6K")
- block:
- name: disable vpc for initial vpc config cleanup
nxos_feature:
feature: vpc
provider: "{{ connection }}"
state: disabled
- name: enable feature vpc
nxos_feature:
feature: vpc
provider: "{{ connection }}"
state: enabled
- name: Ensure ntc VRF exists on switch
nxos_vrf:
vrf: ntc
provider: "{{ connection }}"
- name: Configure vpc
nxos_vpc: &conf_vpc
provider: "{{ connection }}"
state: present
domain: 100
pkl_dest: 192.168.100.4
pkl_src: 10.1.100.20
pkl_vrf: ntc
register: result
- assert: &true
that:
- "result.changed == true"
- name: "Conf Idempotence"
nxos_vpc: *conf_vpc
register: result
- assert: &false
that:
- "result.changed == false"
- name: Configure vpc1
nxos_vpc: &conf_vpc1
provider: "{{ connection }}"
state: present
domain: 100
role_priority: 500
system_priority: 2000
peer_gw: True
delay_restore: 5
delay_restore_interface_vlan: 15
delay_restore_orphan_port: "{{ delay_restore_orphan_port|default(omit) }}"
register: result
- assert: *true
- name: "Conf Idempotence"
nxos_vpc: *conf_vpc1
register: result
- assert: *false
- block:
# This block is only useful on platforms that nvgen 'no auto-recovery'.
# Note: auto_recovery is mutually_exclusive with auto_recovery_reload_delay.
- set_fact: def_auto_recovery=False
- set_fact: def_auto_recovery=True
when: platform is search("N7K")
- name: auto-recovery from default to non-default
nxos_vpc: &auto_recovery_1
provider: "{{ connection }}"
domain: 100
auto_recovery: "{{ not def_auto_recovery }}"
register: result
- assert: *true
- name: "Conf Idempotence auto-recovery def-to-non-def"
nxos_vpc: *auto_recovery_1
register: result
- assert: *false
- name: auto-recovery from non-default to default
nxos_vpc: &auto_recovery_2
provider: "{{ connection }}"
domain: 100
auto_recovery: "{{ def_auto_recovery }}"
register: result
- assert: *true
- name: "Conf Idempotence auto-recovery non-def-to-def"
nxos_vpc: *auto_recovery_2
register: result
- assert: *false
when: platform is search("N35|N7K|N3K-F|N9K-F")
- name: Configure auto-recovery reload-delay
nxos_vpc: &auto_reload
provider: "{{ connection }}"
domain: 100
auto_recovery_reload_delay: 242
register: result
- assert: *true
- name: "Conf Idempotence auto-recovery reload-delay"
nxos_vpc: *auto_reload
register: result
- assert: *false
- name: Configure vpc2
nxos_vpc: &conf_vpc2
provider: "{{ connection }}"
state: present
domain: 100
role_priority: default
system_priority: default
peer_gw: True
delay_restore: default
delay_restore_interface_vlan: default
delay_restore_orphan_port: "{{ def_delay_restore_orphan_port|default(omit) }}"
register: result
- assert: *true
- name: "Conf Idempotence"
nxos_vpc: *conf_vpc2
register: result
- assert: *false
- name: Configure vpc3
nxos_vpc: &conf_vpc3
provider: "{{ connection }}"
state: present
domain: 100
peer_gw: False
register: result
- assert: *true
- name: "Conf Idempotence"
nxos_vpc: *conf_vpc3
register: result
- assert: *false
- name: remove vpc
nxos_vpc: &rem_vpc
provider: "{{ connection }}"
state: absent
domain: 100
register: result
- assert: *true
- name: "Remove Idempotence"
nxos_vpc: *rem_vpc
register: result
- assert: *false
always:
- name: remove vrf
nxos_vrf:
vrf: ntc
provider: "{{ connection }}"
state: absent
ignore_errors: yes
- name: disable feature vpc
nxos_feature:
feature: vpc
provider: "{{ connection }}"
state: disabled
ignore_errors: yes
- debug: msg="END connection={{ ansible_connection }} nxos_vpc sanity test"