Decouple config and state check in vlan and vrf network modules (#36386)

* Decouple config and state check in {network_os }_vlan and { network_os }_vrf modules

Fixes #35567
Fixes #34754

`interfaces` option is used for configuration as well as operational state
check. If interface is configured to given vlan or vrf but if
operational state of interface is disabled it results in module failure.

Fix is to decouple same option usage for config and state.
With this fix `interfaces` is used as config option and a new
option named `associated_interfaces` will be used for intent check
for assigned interfaces.

* Fix CI failures

* Fix review comment

* Fixed integration test failure
This commit is contained in:
Ganesh Nalawade 2018-02-26 09:23:54 +05:30 committed by GitHub
commit 5a6b893240
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 457 additions and 100 deletions

View file

@ -118,13 +118,16 @@
# Ensure sessions contains epoc. Will fail after 18th May 2033
- "'ansible_1' in result.session_name"
- name: Add interfaces to vlan
- name: Add interfaces to vlan and check state
eos_vlan:
vlan_id: 4000
state: present
interfaces:
- Ethernet1
- Ethernet2
associated_interfaces:
- Ethernet1
- Ethernet2
authorize: yes
provider: "{{ cli }}"
become: yes
@ -160,6 +163,22 @@
# Ensure sessions contains epoc. Will fail after 18th May 2033
- "result.session_name is not defined"
- name: vlan interface intent fail
eos_vlan:
vlan_id: 4000
state: present
associated_interfaces:
- test
authorize: yes
provider: "{{ cli }}"
become: yes
register: result
ignore_errors: yes
- assert:
that:
- "result.failed == True"
- name: Remove interface from vlan
eos_vlan:
vlan_id: 4000

View file

@ -85,7 +85,7 @@
# Ensure sessions contains epoc. Will fail after 18th May 2033
- "result.session_name is not defined"
- name: Add Ethernet2 to vrf
- name: Add Ethernet2 to vrf and check interface assigned state
eos_vrf:
name: test
rd: 1:201
@ -93,6 +93,8 @@
authorize: yes
interfaces:
- Ethernet2
associated_interfaces:
- Ethernet2
provider: "{{ cli }}"
become: yes
register: result
@ -124,6 +126,22 @@
# Ensure sessions contains epoc. Will fail after 18th May 2033
- "'session_name' not in result.commands"
- name: vrf interface intent fail
eos_vrf:
name: test
state: present
authorize: yes
associated_interfaces:
- test
provider: "{{ cli }}"
become: yes
register: result
ignore_errors: yes
- assert:
that:
- "result.failed == True"
- name: Add multiple interfaces to vrf
eos_vrf:
name: test1

View file

@ -72,6 +72,31 @@
that:
- "result.changed == false"
- name: Check interface assigned to vrf (intent)
ios_vlan:
vlan_id: 100
associated_interfaces:
- GigabitEthernet0/1
- GigabitEthernet0/2
provider: "{{ cli }}"
register: result
- assert:
that:
- "result.failed == false"
- name: Check interface assigned to vrf (fail)
ios_vlan:
vlan_id: 100
associated_interfaces:
- test
provider: "{{ cli }}"
register: result
- assert:
that:
- "result.failed == True"
- name: Remove interface from vlan
ios_vlan: &single_int
vlan_id: 100

View file

@ -29,12 +29,15 @@
vlan_id: 100
provider: "{{ connection }}"
- name: Add interfaces to vlan
- name: Add interfaces to vlan and check intent (config + intent)
nxos_vlan: &interfaces
vlan_id: 100
interfaces:
- "{{ testint1 }}"
- "{{ testint2 }}"
associated_interfaces:
- "{{ testint1 }}"
- "{{ testint2 }}"
provider: "{{ connection }}"
register: result
@ -58,6 +61,32 @@
that:
- 'result.changed == false'
- name: Check interfaces intent
nxos_vlan:
vlan_id: 100
associated_interfaces:
- "{{ testint1 }}"
- "{{ testint2 }}"
provider: "{{ connection }}"
register: result
- assert:
that:
- "result.failed == false"
- name: Check interfaces intent fail
nxos_vlan:
vlan_id: 100
associated_interfaces:
- test
provider: "{{ connection }}"
register: result
ignore_errors: yes
- assert:
that:
- "result.failed == True"
- name: Remove interface from vlan
nxos_vlan: &single_int
vlan_id: 100

View file

@ -64,18 +64,22 @@
that:
- "result.changed == false"
- name: Assign interfaces to VRF
- name: Assign interfaces to VRF (Config + intent)
nxos_vrf: &interfaces
name: test1
interfaces:
- "{{ testint1 }}"
- "{{ testint2 }}"
associated_interfaces:
- "{{ testint1 }}"
- "{{ testint2 }}"
provider: "{{ connection }}"
register: result
- assert:
that:
- 'result.changed == true'
- "result.failed == false"
- '"interface {{ testint1 }}" in result.commands'
- '"vrf member test1" in result.commands'
- '"interface {{ testint2 }}" in result.commands'
@ -89,6 +93,32 @@
that:
- 'result.changed == false'
- name: Check interfaces assigned to VRF (intent)
nxos_vrf:
name: test1
associated_interfaces:
- "{{ testint1 }}"
- "{{ testint2 }}"
provider: "{{ connection }}"
register: result
- assert:
that:
- "result.failed == false"
- name: Assign interfaces to VRF (intent fail)
nxos_vrf:
name: test1
associated_interfaces:
- test
provider: "{{ connection }}"
register: result
ignore_errors: yes
- assert:
that:
- "result.failed == True"
- name: Remove interface from vrf
nxos_vrf: &single_int
name: test1

View file

@ -0,0 +1,59 @@
---
- debug: msg="START cli/intent.yaml on connection={{ ansible_connection }}"
- name: setup - remove vlan used in test
vyos_config: &delete
lines:
- delete interfaces ethernet eth1 vif 100
- delete interfaces ethernet eth0 vif 100
- name: set vlan with name
vyos_vlan:
vlan_id: 100
name: vlan-100
interfaces: eth1
register: result
- assert:
that:
- "result.changed == true"
- "'set interfaces ethernet eth1 vif 100 description vlan-100' in result.commands"
- name: check vlan interface intent
vyos_vlan:
vlan_id: 100
name: vlan-100
associated_interfaces: eth1
register: result
- assert:
that:
- "result.failed == false"
- name: vlan interface config + intent
vyos_vlan:
vlan_id: 100
interfaces: eth0
associated_interfaces:
- eth0
- eth1
register: result
- assert:
that:
- "result.failed == false"
- name: vlan intent fail
vyos_vlan:
vlan_id: 100
associated_interfaces:
- eth3
- eth4
register: result
ignore_errors: yes
- assert:
that:
- "result.failed == True"
- debug: msg="End cli/intent.yaml on connection={{ ansible_connection }}"