|
|
|
---
|
|
|
|
- debug:
|
|
|
|
msg: "Start nxos_l3_interfaces replaced integration tests connection={{ ansible_connection }}"
|
|
|
|
|
|
|
|
- set_fact:
|
|
|
|
test_int3: "{{ nxos_int3 }}"
|
|
|
|
subint3: "{{ nxos_int3 }}.42"
|
|
|
|
|
|
|
|
- name: setup1
|
|
|
|
cli_config: &cleanup
|
|
|
|
config: |
|
|
|
|
no system default switchport
|
|
|
|
default interface {{ test_int3 }}
|
|
|
|
interface {{ test_int3 }}
|
|
|
|
no switchport
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: setup2 cleanup all L3 states on all interfaces
|
|
|
|
nxos_l3_interfaces:
|
|
|
|
state: deleted
|
|
|
|
|
|
|
|
- block:
|
|
|
|
- name: setup3
|
|
|
|
cli_config:
|
|
|
|
config: |
|
|
|
|
interface {{ subint3 }}
|
|
|
|
encapsulation dot1q 42
|
|
|
|
ip address 192.168.10.2/24
|
|
|
|
no ip redirects
|
|
|
|
ip unreachables
|
|
|
|
|
|
|
|
- name: Gather l3_interfaces facts
|
|
|
|
nxos_facts: &facts
|
|
|
|
gather_subset:
|
|
|
|
- '!all'
|
|
|
|
- '!min'
|
|
|
|
gather_network_resources: l3_interfaces
|
|
|
|
|
|
|
|
- name: Replaced
|
|
|
|
nxos_l3_interfaces: &replaced
|
|
|
|
config:
|
|
|
|
- name: "{{ subint3 }}"
|
|
|
|
dot1q: 442
|
|
|
|
# Note: device auto-disables redirects when secondaries are present
|
|
|
|
redirects: false
|
|
|
|
unreachables: false
|
|
|
|
ipv4:
|
|
|
|
- address: 192.168.20.2/24
|
|
|
|
tag: 5
|
|
|
|
- address: 192.168.200.2/24
|
|
|
|
secondary: True
|
|
|
|
state: replaced
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.before|length == (ansible_facts.network_resources.l3_interfaces|length|int - rsvd_intf_len|int)"
|
|
|
|
- "result.changed == true"
|
|
|
|
- "'interface {{ subint3 }}' in result.commands"
|
|
|
|
- "'encapsulation dot1q 442' in result.commands"
|
|
|
|
- "'no ip unreachables' in result.commands"
|
|
|
|
- "'ip address 192.168.20.2/24 tag 5' in result.commands"
|
|
|
|
- "'ip address 192.168.200.2/24 secondary' in result.commands"
|
|
|
|
- "result.commands|length == 5"
|
|
|
|
|
|
|
|
- name: Gather l3_interfaces post facts
|
|
|
|
nxos_facts: *facts
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.after|length == (ansible_facts.network_resources.l3_interfaces|length|int - rsvd_intf_len|int)"
|
|
|
|
|
|
|
|
- name: Idempotence - Replaced
|
|
|
|
nxos_l3_interfaces: *replaced
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == false"
|
|
|
|
- "result.commands|length == 0"
|
|
|
|
|
|
|
|
- name: Replaced with no optional attrs specified
|
|
|
|
nxos_l3_interfaces: &replaced_no_attrs
|
|
|
|
config:
|
|
|
|
- name: "{{ subint3 }}"
|
|
|
|
state: replaced
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == true"
|
|
|
|
- "'interface {{ subint3 }}' in result.commands"
|
|
|
|
- "'no encapsulation dot1q' in result.commands"
|
|
|
|
- "'no ip address' in result.commands"
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
# 'ip redirects' normally auto-enables due to rmv'ing the secondaries;
|
|
|
|
# this behavior is unreliable on legacy platforms thus command is explicit.
|
|
|
|
- "'ip redirects' in result.commands"
|
|
|
|
when: platform is match('N[3567]')
|
|
|
|
|
|
|
|
- name: Idempotence - Replaced with no attrs specified
|
|
|
|
nxos_l3_interfaces: *replaced_no_attrs
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == false"
|
|
|
|
- "result.commands|length == 0"
|
|
|
|
|
|
|
|
always:
|
|
|
|
- name: teardown
|
|
|
|
cli_config:
|
|
|
|
config: |
|
|
|
|
no interface {{ subint3 }}
|
|
|
|
ignore_errors: yes
|