mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-07 13:52:54 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
59
test/integration/targets/vyos_vlan/tests/cli/intent.yaml
Normal file
59
test/integration/targets/vyos_vlan/tests/cli/intent.yaml
Normal 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 }}"
|
||||
Reference in New Issue
Block a user