mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-07 22:02:50 +00:00
Refactoring of cnos_interface module like what followed by other vendors (#49927)
* Refactoring of cnos_interface module like what followed by other vendors * To remove cnos-interface from E326 validation ignore list * Effect of default parameters impacted UT
This commit is contained in:
committed by
Nathaniel Case
parent
1829a72885
commit
eab3b02cb3
2
test/integration/targets/cnos_interface/aliases
Normal file
2
test/integration/targets/cnos_interface/aliases
Normal file
@@ -0,0 +1,2 @@
|
||||
# No Lenovo Switch simulator yet, so not enabled
|
||||
unsupported
|
||||
@@ -0,0 +1,14 @@
|
||||
# You have to paste this dummy information in /etc/ansible/hosts
|
||||
# Notes:
|
||||
# - Comments begin with the '#' character
|
||||
# - Blank lines are ignored
|
||||
# - Groups of hosts are delimited by [header] elements
|
||||
# - You can enter hostnames or ip addresses
|
||||
# - A hostname/ip can be a member of multiple groups
|
||||
#
|
||||
# In the /etc/ansible/hosts file u have to enter [cnos_interface_sample] tag
|
||||
# Following you should specify IP Adresses details
|
||||
# Please change <username> and <password> with appropriate value for your switch.
|
||||
|
||||
[cnos_interface_sample]
|
||||
10.241.107.39 ansible_network_os=cnos ansible_ssh_user=<username> ansible_ssh_pass=<password> test_interface=ethernet1/33 test_interface2=ethernet1/44
|
||||
@@ -0,0 +1,2 @@
|
||||
---
|
||||
testcase: "*"
|
||||
22
test/integration/targets/cnos_interface/tasks/cli.yaml
Normal file
22
test/integration/targets/cnos_interface/tasks/cli.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
- name: collect all cli test cases
|
||||
find:
|
||||
paths: "{{ role_path }}/tests/cli"
|
||||
patterns: "{{ testcase }}.yaml"
|
||||
register: test_cases
|
||||
delegate_to: localhost
|
||||
|
||||
- name: set test_items
|
||||
set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
|
||||
|
||||
- name: run test cases (connection=network_cli)
|
||||
include: "{{ test_case_to_run }}"
|
||||
with_items: "{{ test_items }}"
|
||||
loop_control:
|
||||
loop_var: test_case_to_run
|
||||
|
||||
- name: run test case (connection=local)
|
||||
include: "{{ test_case_to_run }} ansible_connection=local"
|
||||
with_first_found: "{{ test_items }}"
|
||||
loop_control:
|
||||
loop_var: test_case_to_run
|
||||
2
test/integration/targets/cnos_interface/tasks/main.yaml
Normal file
2
test/integration/targets/cnos_interface/tasks/main.yaml
Normal file
@@ -0,0 +1,2 @@
|
||||
---
|
||||
- { include: cli.yaml, tags: ['cli'] }
|
||||
228
test/integration/targets/cnos_interface/tests/cli/basic.yaml
Normal file
228
test/integration/targets/cnos_interface/tests/cli/basic.yaml
Normal file
@@ -0,0 +1,228 @@
|
||||
---
|
||||
- debug: msg="START cnos_interface cli/basic.yaml on connection={{ ansible_connection }}"
|
||||
|
||||
- name: Configure interface (setup)
|
||||
cnos_interface:
|
||||
name: "{{ test_interface }}"
|
||||
description: test-interface-1
|
||||
speed: 1000
|
||||
mtu: 1800
|
||||
state: present
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- name: Configure interface
|
||||
cnos_interface:
|
||||
name: "{{ test_interface }}"
|
||||
description: test-interface-initial
|
||||
state: present
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- '"interface {{ test_interface }}" in result.commands'
|
||||
- '"description test-interface-initial" in result.commands'
|
||||
|
||||
- name: Confgure interface (idempotent)
|
||||
cnos_interface:
|
||||
name: "{{ test_interface }}"
|
||||
description: test-interface-initial
|
||||
state: present
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
|
||||
- name: Confgure interface parameters
|
||||
cnos_interface:
|
||||
name: "{{ test_interface }}"
|
||||
description: test-interface
|
||||
mtu: 2000
|
||||
state: present
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- '"interface {{ test_interface }}" in result.commands'
|
||||
- '"description test-interface" in result.commands'
|
||||
- '"mtu 2000" in result.commands'
|
||||
|
||||
- name: Change interface parameters
|
||||
cnos_interface:
|
||||
name: "{{ test_interface }}"
|
||||
description: test-interface-1
|
||||
mtu: 1800
|
||||
state: present
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- '"interface {{ test_interface }}" in result.commands'
|
||||
- '"description test-interface-1" in result.commands'
|
||||
- '"mtu 1800" in result.commands'
|
||||
|
||||
- name: Disable interface
|
||||
cnos_interface:
|
||||
name: "{{ test_interface }}"
|
||||
enabled: False
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
#- '"interface {{ test_interface }}" in result.commands'
|
||||
#- '"shutdown" in result.commands'
|
||||
|
||||
- name: Enable interface
|
||||
cnos_interface:
|
||||
name: "{{ test_interface }}"
|
||||
enabled: True
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- '"interface {{ test_interface }}" in result.commands'
|
||||
#- '"no shutdown" in result.commands'
|
||||
|
||||
- name: Confgure second interface (setup)
|
||||
cnos_interface:
|
||||
name: "{{ test_interface2 }}"
|
||||
description: test-interface-initial
|
||||
speed: 1000
|
||||
mtu: 1800
|
||||
state: present
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- name: Add interface aggregate
|
||||
cnos_interface:
|
||||
aggregate:
|
||||
- { name: "{{ test_interface }}", mtu: 2000, description: test-interface-1 }
|
||||
- { name: "{{ test_interface2 }}", mtu: 2000, description: test-interface-2 }
|
||||
speed: 1000
|
||||
state: present
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- '"interface {{ test_interface }}" in result.commands'
|
||||
- '"mtu 2000" in result.commands'
|
||||
- '"interface {{ test_interface2 }}" in result.commands'
|
||||
- '"description test-interface-2" in result.commands'
|
||||
- '"mtu 2000" in result.commands'
|
||||
|
||||
- name: Add interface aggregate (idempotent)
|
||||
cnos_interface:
|
||||
aggregate:
|
||||
- { name: "{{ test_interface }}", mtu: 2000, description: test-interface-1 }
|
||||
- { name: "{{ test_interface2 }}", mtu: 2000, description: test-interface-2 }
|
||||
speed: 1000
|
||||
state: present
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
|
||||
- name: Disable interface aggregate
|
||||
cnos_interface:
|
||||
aggregate:
|
||||
- { name: "{{ test_interface }}" }
|
||||
- { name: "{{ test_interface2 }}" }
|
||||
enabled: False
|
||||
state: present
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
# - '"interface {{ test_interface }}" in result.commands'
|
||||
# - '"shutdown" in result.commands'
|
||||
# - '"interface {{ test_interface2 }}" in result.commands'
|
||||
# - '"shutdown" in result.commands'
|
||||
|
||||
- name: Enable interface aggregate
|
||||
cnos_interface:
|
||||
aggregate:
|
||||
- { name: "{{ test_interface }}" }
|
||||
- { name: "{{ test_interface2 }}" }
|
||||
enabled: True
|
||||
state: present
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- '"interface {{ test_interface }}" in result.commands'
|
||||
#- '"no shutdown" in result.commands'
|
||||
- '"interface {{ test_interface2 }}" in result.commands'
|
||||
#- '"no shutdown" in result.commands'
|
||||
|
||||
- name: loopback interface setup
|
||||
cnos_interface:
|
||||
aggregate:
|
||||
- name: loopback3
|
||||
- name: loopback6
|
||||
state: absent
|
||||
provider: "{{ cli }}"
|
||||
|
||||
- name: Create loopback interface aggregate
|
||||
cnos_interface:
|
||||
aggregate:
|
||||
- name: loopback3
|
||||
- name: loopback6
|
||||
state: present
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
#- '"interface loopback3" in result.commands'
|
||||
#- '"interface loopback6" in result.commands'
|
||||
|
||||
- name: Delete loopback interface aggregate
|
||||
cnos_interface:
|
||||
aggregate:
|
||||
- name: loopback3
|
||||
- name: loopback6
|
||||
state: absent
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- '"no interface loopback3" in result.commands'
|
||||
- '"no interface loopback6" in result.commands'
|
||||
|
||||
- name: Delete loopback interface aggregate (idempotent)
|
||||
cnos_interface:
|
||||
aggregate:
|
||||
- name: loopback3
|
||||
- name: loopback6
|
||||
state: absent
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == false'
|
||||
|
||||
- debug: msg="END cnos_interface cli/basic.yaml on connection={{ ansible_connection }}"
|
||||
140
test/integration/targets/cnos_interface/tests/cli/intent.yaml
Normal file
140
test/integration/targets/cnos_interface/tests/cli/intent.yaml
Normal file
@@ -0,0 +1,140 @@
|
||||
---
|
||||
- debug: msg="START cnos_interface cli/intent.yaml on connection={{ ansible_connection }}"
|
||||
|
||||
- name: Check intent arguments
|
||||
cnos_interface:
|
||||
name: "{{ test_interface }}"
|
||||
state: down
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.failed == false"
|
||||
|
||||
- name: Check intent arguments (failed condition)
|
||||
cnos_interface:
|
||||
name: "{{ test_interface }}"
|
||||
state: up
|
||||
provider: "{{ cli }}"
|
||||
ignore_errors: yes
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.failed == true"
|
||||
- "'state eq(up)' in result.failed_conditions"
|
||||
|
||||
- name: Config + intent
|
||||
cnos_interface:
|
||||
name: "{{ test_interface }}"
|
||||
enabled: False
|
||||
state: down
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.failed == false"
|
||||
|
||||
- name: Config + intent (fail)
|
||||
cnos_interface:
|
||||
name: "{{ test_interface }}"
|
||||
enabled: False
|
||||
provider: "{{ cli }}"
|
||||
state: up
|
||||
ignore_errors: yes
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.failed == true"
|
||||
- "'state eq(up)' in result.failed_conditions"
|
||||
|
||||
- name: Register show neighbors detail
|
||||
cnos_command:
|
||||
commands:
|
||||
- show lldp neighbors
|
||||
provider: "{{ cli }}"
|
||||
register: show_lldp_neighbors_result
|
||||
|
||||
- block:
|
||||
- name: Check neighbors intent arguments
|
||||
cnos_interface:
|
||||
name: Ethernet1/7
|
||||
neighbors:
|
||||
- port: Ethernet1/19
|
||||
host: NE1032
|
||||
provider: "{{ cli }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.failed == false"
|
||||
|
||||
- name: Check neighbors intent arguments (failed condition)
|
||||
cnos_interface:
|
||||
name: Ethernet1/7
|
||||
neighbors:
|
||||
- port: dummy_port
|
||||
host: dummy_host
|
||||
provider: "{{ cli }}"
|
||||
ignore_errors: yes
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.failed == true"
|
||||
- "'host dummy_host' in result.failed_conditions"
|
||||
- "'port dummy_port' in result.failed_conditions"
|
||||
when: '"netdev" in show_lldp_neighbors_result.stdout[0]'
|
||||
|
||||
- name: Aggregate config + intent (pass)
|
||||
cnos_interface:
|
||||
aggregate:
|
||||
- name: "{{ test_interface }}"
|
||||
enabled: True
|
||||
state: down
|
||||
provider: "{{ cli }}"
|
||||
ignore_errors: yes
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.failed == false"
|
||||
|
||||
- block:
|
||||
- name: Aggregate neighbors intent (pass)
|
||||
cnos_interface:
|
||||
aggregate:
|
||||
- name: Ethernet1/7
|
||||
neighbors:
|
||||
- port: Ethernet1/19
|
||||
host: NE1032
|
||||
provider: "{{ cli }}"
|
||||
ignore_errors: yes
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.failed == false"
|
||||
|
||||
- name: Aggregate neighbors intent (fail)
|
||||
cnos_interface:
|
||||
aggregate:
|
||||
- name: Ethernet1/7
|
||||
neighbors:
|
||||
- port: Ethernet1/19
|
||||
host: NE1032
|
||||
- port: dummy_port
|
||||
host: dummy_host
|
||||
provider: "{{ cli }}"
|
||||
ignore_errors: yes
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.failed == true"
|
||||
- "'host dummy_host' in result.failed_conditions"
|
||||
- "'port dummy_port' in result.failed_conditions"
|
||||
when: "'netdev' in show_lldp_neighbors_result.stdout[0]"
|
||||
9
test/integration/targets/cnos_interface/vars/main.yaml
Normal file
9
test/integration/targets/cnos_interface/vars/main.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
cli:
|
||||
host: "{{ inventory_hostname }}"
|
||||
port: 22
|
||||
username: admin
|
||||
password: admin
|
||||
timeout: 30
|
||||
authorize: True
|
||||
auth_pass:
|
||||
Reference in New Issue
Block a user