Add vyos_l3_interface module (#26610)

* Add vyos_l3_interface module

* Add integration tests for vyos_l3_interface

* Add more corner cases in tests and fix multiple IPs logic
This commit is contained in:
Ricardo Carrillo Cruz 2017-07-12 08:40:26 +02:00 committed by GitHub
commit 3f5736e14e
6 changed files with 444 additions and 0 deletions

View file

@ -0,0 +1,3 @@
---
testcase: "*"
test_items: []

View file

@ -0,0 +1,15 @@
---
- name: collect all cli test cases
find:
paths: "{{ role_path }}/tests/cli"
patterns: "{{ testcase }}.yaml"
register: test_cases
- name: set test_items
set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}"
- name: run test case
include: "{{ test_case_to_run }}"
with_items: "{{ test_items }}"
loop_control:
loop_var: test_case_to_run

View file

@ -0,0 +1,2 @@
---
- { include: cli.yaml, tags: ['cli'] }

View file

@ -0,0 +1,195 @@
---
- name: Remove IP address
vyos_l3_interface:
name: eth1
state: absent
- name: Remove IP address
vyos_l3_interface:
name: eth2
state: absent
- name: Set IPv4 address
vyos_l3_interface:
name: eth1
ipv4: 192.168.2.10/24
register: result
- assert:
that:
- 'result.changed == true'
- '"set interfaces ethernet eth1 address 192.168.2.10/24" in result.commands'
- name: Set IPv4 address (idempotent)
vyos_l3_interface:
name: eth1
ipv4: 192.168.2.10/24
register: result
- assert:
that:
- 'result.changed == false'
- name: Set IPv6 address
vyos_l3_interface:
name: eth1
ipv6: fd5d:12c9:2201:1::1/64
register: result
- assert:
that:
- 'result.changed == true'
- '"set interfaces ethernet eth1 address fd5d:12c9:2201:1::1/64" in result.commands'
- name: Set IPv6 address (idempotent)
vyos_l3_interface:
name: eth1
ipv6: fd5d:12c9:2201:1::1/64
register: result
- assert:
that:
- 'result.changed == false'
- name: Remove all IP addresses
vyos_l3_interface:
name: eth1
state: absent
register: result
- assert:
that:
- 'result.changed == true'
- '"delete interfaces ethernet eth1 address" in result.commands'
- name: Remove all IP addresses again (idempotent)
vyos_l3_interface:
name: eth1
state: absent
register: result
- assert:
that:
- 'result.changed == false'
- name: Set IPv4 and IPv6 address
vyos_l3_interface:
name: eth1
ipv4: 192.168.2.10/24
ipv6: fd5d:12c9:2201:1::1/64
register: result
- assert:
that:
- 'result.changed == true'
- '"set interfaces ethernet eth1 address 192.168.2.10/24" in result.commands'
- '"set interfaces ethernet eth1 address fd5d:12c9:2201:1::1/64" in result.commands'
- name: Set IPv4 and IPv6 address again (idempotent)
vyos_l3_interface:
name: eth1
ipv4: 192.168.2.10/24
ipv6: fd5d:12c9:2201:1::1/64
register: result
- assert:
that:
- 'result.changed == false'
- name: Remove IPv4 address
vyos_l3_interface:
name: eth1
ipv4: 192.168.2.10/24
state: absent
register: result
- assert:
that:
- 'result.changed == true'
- '"delete interfaces ethernet eth1 address 192.168.2.10/24" in result.commands'
- name: Remove IPv4 address again (idempotent)
vyos_l3_interface:
name: eth1
ipv4: 192.168.2.10/24
state: absent
register: result
- assert:
that:
- 'result.changed == false'
- name: Remove IPv6 address
vyos_l3_interface:
name: eth1
ipv6: fd5d:12c9:2201:1::1/64
state: absent
register: result
- assert:
that:
- 'result.changed == true'
- '"delete interfaces ethernet eth1 address fd5d:12c9:2201:1::1/64" in result.commands'
- name: Remove IPv6 address again (idempotent)
vyos_l3_interface:
name: eth1
ipv6: fd5d:12c9:2201:1::1/64
state: absent
register: result
- assert:
that:
- 'result.changed == false'
- name: Set IP addresses on aggregate
vyos_l3_interface:
aggregate:
- { name: eth1, ipv4: 192.168.2.10/24 }
- { name: eth2, ipv4: 192.168.3.10/24, ipv6: "fd5d:12c9:2201:1::1/64" }
register: result
- assert:
that:
- 'result.changed == true'
- '"set interfaces ethernet eth1 address 192.168.2.10/24" in result.commands'
- '"set interfaces ethernet eth2 address 192.168.3.10/24" in result.commands'
- '"set interfaces ethernet eth2 address fd5d:12c9:2201:1::1/64" in result.commands'
- name: Set IP addresses on aggregate (idempotent)
vyos_l3_interface:
aggregate:
- { name: eth1, ipv4: 192.168.2.10/24 }
- { name: eth2, ipv4: 192.168.3.10/24, ipv6: "fd5d:12c9:2201:1::1/64" }
register: result
- assert:
that:
- 'result.changed == false'
- name: Remove IP addresses on aggregate
vyos_l3_interface:
aggregate:
- { name: eth1, ipv4: 192.168.2.10/24 }
- { name: eth2, ipv4: 192.168.3.10/24, ipv6: "fd5d:12c9:2201:1::1/64" }
state: absent
register: result
- assert:
that:
- 'result.changed == true'
- '"delete interfaces ethernet eth1 address 192.168.2.10/24" in result.commands'
- '"delete interfaces ethernet eth2 address 192.168.3.10/24" in result.commands'
- '"delete interfaces ethernet eth2 address fd5d:12c9:2201:1::1/64" in result.commands'
- name: Remove IP addresses on aggregate (idempotent)
vyos_l3_interface:
aggregate:
- { name: eth1, ipv4: 192.168.2.10/24 }
- { name: eth2, ipv4: 192.168.3.10/24, ipv6: "fd5d:12c9:2201:1::1/64" }
state: absent
register: result
- assert:
that:
- 'result.changed == false'

View file

@ -56,6 +56,13 @@
rescue:
- set_fact: test_failed=true
- block:
- include_role:
name: vyos_l3_interface
when: "limit_to in ['*', 'vyos_l3_interface']"
rescue:
- set_fact: test_failed=true
###########
- name: Has any previous test failed?