ansible/test/integration/targets/ios_vlan/tests/cli/basic.yaml
Ganesh Nalawade d60eac9bc4
Decouple config and state check in vlan and vrf network modules (#36386) (#36704)
* 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

(cherry picked from commit 5a6b893240)
2018-02-26 10:16:39 +05:30

238 lines
5.5 KiB
YAML

---
- debug: msg="START cli/basic.yaml on connection={{ ansible_connection }}"
- set_fact: switch_type="{{ switch_type }}"
- block:
- name: setup - remove vlan used in test
ios_config:
lines:
- no vlan 100
- no vlan 200
- no vlan 300
provider: "{{ cli }}"
- name: setup - remove switchport settings on interfaces used in test
ios_config:
lines:
- switchport mode access
- no switchport access vlan 100
provider: "{{ cli }}"
parents: "{{ item }}"
loop:
- interface GigabitEthernet0/1
- interface GigabitEthernet0/2
- name: create vlan
ios_vlan: &create
vlan_id: 100
name: test-vlan
provider: "{{ cli }}"
register: result
- assert:
that:
- "result.changed == true"
- "'vlan 100' in result.commands"
- "'name test-vlan' in result.commands"
- name: create vlan(idempotence)
ios_vlan: *create
register: result
- assert:
that:
- "result.changed == false"
- name: Add interfaces to vlan
ios_vlan: &interfaces
vlan_id: 100
interfaces:
- GigabitEthernet0/1
- GigabitEthernet0/2
provider: "{{ cli }}"
register: result
- assert:
that:
- "result.changed == true"
- "'interface GigabitEthernet0/1' in result.commands"
- "'switchport mode access' in result.commands"
- "'switchport access vlan 100' in result.commands"
- "'interface GigabitEthernet0/2' in result.commands"
- "'switchport mode access' in result.commands"
- "'switchport access vlan 100' in result.commands"
- name: Add interfaces to vlan(idempotence)
ios_vlan: *interfaces
register: result
- assert:
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
interfaces:
- GigabitEthernet0/1
provider: "{{ cli }}"
register: result
- assert:
that:
- "result.changed == true"
- "'vlan 100' in result.commands"
- "'interface GigabitEthernet0/2' in result.commands"
- "'switchport mode access' in result.commands"
- "'no switchport access vlan 100' in result.commands"
- name: Remove interface from vlan(idempotence)
ios_vlan: *single_int
register: result
- assert:
that:
- "result.changed == false"
- name: Suspend vlan
ios_vlan:
vlan_id: 100
state: suspend
provider: "{{ cli }}"
register: result
- assert:
that:
- "result.changed == true"
- "'vlan 100' in result.commands"
- "'state suspend' in result.commands"
- name: Unsuspend vlan
ios_vlan:
vlan_id: 100
state: active
provider: "{{ cli }}"
register: result
- assert:
that:
- "result.changed == true"
- "'vlan 100' in result.commands"
- "'state active' in result.commands"
- name: delete vlan
ios_vlan: &delete
vlan_id: 100
provider: "{{ cli }}"
state: absent
register: result
- assert:
that:
- "result.changed == true"
- "'no vlan 100' in result.commands"
- name: delete vlan(idempotence)
ios_vlan: *delete
register: result
- assert:
that:
- "result.changed == false"
- name: create vlans using aggregate
ios_vlan: &create_aggregate
aggregate:
- { vlan_id: 200, name: vlan-200 }
- { vlan_id: 300, name: vlan-300 }
provider: "{{ cli }}"
register: result
- assert:
that:
- "result.changed == true"
- "'vlan 200' in result.commands"
- "'name vlan-200' in result.commands"
- "'vlan 300' in result.commands"
- "'name vlan-300' in result.commands"
- name: create vlans using aggregate(idempotence)
ios_vlan: *create_aggregate
register: result
- assert:
that:
- "result.changed == false"
- name: delete vlans using aggregate
ios_vlan: &delete_aggregate
aggregate:
- { vlan_id: 200, name: vlan-200 }
- { vlan_id: 300, name: vlan-300 }
state: absent
provider: "{{ cli }}"
register: result
- assert:
that:
- "result.changed == true"
- "'no vlan 200' in result.commands"
- "'no vlan 300' in result.commands"
- name: delete vlans using aggregate(idempotence)
ios_vlan: *delete_aggregate
register: result
- assert:
that:
- "result.changed == false"
- name: teardown(part1)
ios_config:
lines:
- no vlan 100
- no vlan 200
- no vlan 300
provider: "{{ cli }}"
- name: teardown(part2)
ios_config:
lines:
- switchport mode access
- no switchport access vlan 100
provider: "{{ cli }}"
parents: "{{ item }}"
loop:
- interface GigabitEthernet0/1
- interface GigabitEthernet0/2
when: switch_type == 'L2'
- debug: msg="END cli/basic.yaml on connection={{ ansible_connection }}"