summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/targets/vyos_firewall_rules/vars/v1_4.yaml1
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/_get_version.yaml28
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml16
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/_remove_config.yaml13
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml16
-rw-r--r--tests/integration/targets/vyos_interfaces/vars/main.yaml43
-rw-r--r--tests/integration/targets/vyos_interfaces/vars/pre-v1_5.yaml2
-rw-r--r--tests/integration/targets/vyos_interfaces/vars/v1_5.yaml1
-rw-r--r--tests/integration/targets/vyos_l3_interfaces/vars/main.yaml6
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_interfaces_config_vif.cfg14
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_interfaces.py236
11 files changed, 307 insertions, 69 deletions
diff --git a/tests/integration/targets/vyos_firewall_rules/vars/v1_4.yaml b/tests/integration/targets/vyos_firewall_rules/vars/v1_4.yaml
index 267803f6..08675983 100644
--- a/tests/integration/targets/vyos_firewall_rules/vars/v1_4.yaml
+++ b/tests/integration/targets/vyos_firewall_rules/vars/v1_4.yaml
@@ -85,7 +85,6 @@ overridden_commands:
- set firewall ipv4 name Downlink rule 502 description 'Rule 502 is configured by Ansible'
- set firewall ipv4 name Downlink rule 502 protocol 'tcp'
-
rendered:
commands:
- set firewall ipv6 name UPLINK default-action 'accept'
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/_get_version.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/_get_version.yaml
new file mode 100644
index 00000000..46f4b821
--- /dev/null
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/_get_version.yaml
@@ -0,0 +1,28 @@
+- name: make sure to get facts
+ vyos.vyos.vyos_facts:
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
+ register: vyos_facts
+ when: vyos_version is not defined
+
+- name: debug vyos_facts
+ debug:
+ var: vyos_facts
+
+- name: pull version from facts
+ set_fact:
+ vyos_version: "{{ vyos_facts.ansible_facts.ansible_net_version.split('-')[0].split(' ')[-1] }}"
+ when: vyos_version is not defined
+
+- name: fix '.0' versions
+ set_fact:
+ vyos_version: "{{ vyos_version }}.0"
+ when: vyos_version.count('.') == 1
+
+- name: include correct vars
+ include_vars: pre-v1_5.yaml
+ when: vyos_version is version('1.5.0', '<', version_type='semver')
+
+- name: include correct vars
+ include_vars: v1_5.yaml
+ when: vyos_version is version('1.5.0', '>=', version_type='semver')
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml
index c6cc1a8d..45bd9b6a 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml
@@ -1,17 +1,15 @@
---
+- name: ensure facts
+ include_tasks: _get_version.yaml
+
- ansible.builtin.include_tasks: _remove_config.yaml
- name: Setup
- vars:
- lines: |-
+ ansible.netcommon.cli_config:
+ config: |-
+ {% for intf in ('eth1','eth2') %}
set interfaces ethernet "{{ intf }}" description 'Configured by Ansible'
set interfaces ethernet "{{ intf }}" mtu '1500'
set interfaces ethernet "{{ intf }}" vif 200
set interfaces ethernet "{{ intf }}" vif 200 description 'VIF - 200'
- loop:
- - eth1
- - eth2
- loop_control:
- loop_var: intf
- ansible.netcommon.cli_config:
- config: "{{ lines }}"
+ {% endfor %}
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/_remove_config.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/_remove_config.yaml
index ed2b424b..73f481bf 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/_remove_config.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/_remove_config.yaml
@@ -1,17 +1,12 @@
---
- name: Remove Config
- vars:
- lines: |-
+ ansible.netcommon.cli_config:
+ config: |-
+ {% for intf in ('eth1','eth2') %}
delete interfaces ethernet "{{ intf }}" description
delete interfaces ethernet "{{ intf }}" speed
delete interfaces ethernet "{{ intf }}" duplex
delete interfaces ethernet "{{ intf }}" mtu
delete interfaces ethernet "{{ intf }}" disable
delete interfaces ethernet "{{ intf }}" vif
- loop:
- - eth1
- - eth2
- loop_control:
- loop_var: intf
- ansible.netcommon.cli_config:
- config: "{{ lines }}"
+ {% endfor %}
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml
index 6309c590..9d0a3a8b 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml
@@ -23,7 +23,7 @@
- name: Assert that correct set of commands were generated
assert:
that:
- - "{{ replaced['commands'] | symmetric_difference(result['commands']) |length == 0 }}"
+ - replaced['commands'] | symmetric_difference(result['commands']) |length == 0
- debug:
var: populate | symmetric_difference(result['before'])
@@ -31,7 +31,7 @@
- name: Assert that before dicts are correctly generated
assert:
that:
- - "{{ populate | symmetric_difference(result['before']) |length == 0 }}"
+ - populate | symmetric_difference(result['before']) |length == 0
- debug:
var: replaced['after'] | symmetric_difference(result['after'])
@@ -39,7 +39,15 @@
- name: Assert that after dict is correctly generated
assert:
that:
- - "{{ replaced['after'] | symmetric_difference(result['after']) |length == 0 }}"
+ - replaced['after'] | symmetric_difference(result['after']) |length == 0
+
+ - vyos.vyos.vyos_facts:
+ gather_network_resources: interfaces
+
+ - name: Assert that the facts and the after dict are the same
+ assert:
+ that:
+ - result.after == ansible_facts['network_resources']['interfaces']
- name: Replace device configurations of listed interfaces with provided configurarions (IDEMPOTENT)
register: result
@@ -53,6 +61,6 @@
- name: Assert that before dict is correctly generated
assert:
that:
- - "{{ replaced['after'] | symmetric_difference(result['before']) |length == 0 }}"
+ - replaced['after'] | symmetric_difference(result['before']) |length == 0
always:
- include_tasks: _remove_config.yaml
diff --git a/tests/integration/targets/vyos_interfaces/vars/main.yaml b/tests/integration/targets/vyos_interfaces/vars/main.yaml
index 9d931707..be87cf8c 100644
--- a/tests/integration/targets/vyos_interfaces/vars/main.yaml
+++ b/tests/integration/targets/vyos_interfaces/vars/main.yaml
@@ -9,8 +9,6 @@ merged:
enabled: true
- name: eth2
enabled: true
- - name: lo
- enabled: true
commands:
- set interfaces ethernet eth1 description 'Configured by Ansible - Interface 1'
- set interfaces ethernet eth1 mtu '1500'
@@ -21,8 +19,6 @@ merged:
- set interfaces ethernet eth2 mtu '1406'
- set interfaces ethernet eth2 disable
after:
- - name: lo
- enabled: true
- name: eth0
enabled: true
duplex: auto
@@ -44,8 +40,6 @@ merged:
mtu: 1406
enabled: false
populate:
- - name: lo
- enabled: true
- name: eth1
enabled: true
description: Configured by Ansible
@@ -69,15 +63,13 @@ populate:
replaced:
commands:
- delete interfaces ethernet eth1 mtu
- - delete interfaces ethernet eth1 vif 200 description
+ - delete interfaces ethernet eth1 vif 200
- set interfaces ethernet eth1 description 'Replaced by Ansible'
- set interfaces ethernet eth1 vif 100 description 'VIF 100 - Replaced by Ansible'
- - delete interfaces ethernet eth2 vif 200 description
+ - delete interfaces ethernet eth2 vif 200
- set interfaces ethernet eth2 description 'Replaced by Ansible'
- set interfaces ethernet eth2 mtu '1400'
after:
- - name: lo
- enabled: true
- name: eth1
description: Replaced by Ansible
enabled: true
@@ -85,15 +77,10 @@ replaced:
- vlan_id: 100
enabled: true
description: VIF 100 - Replaced by Ansible
- - vlan_id: 200
- enabled: true
- name: eth2
mtu: 1400
description: Replaced by Ansible
enabled: true
- vifs:
- - vlan_id: 200
- enabled: true
- name: eth0
enabled: true
duplex: auto
@@ -120,29 +107,21 @@ overridden:
commands:
- delete interfaces ethernet eth1 description
- delete interfaces ethernet eth1 mtu
- - delete interfaces ethernet eth1 vif 200 description
- - delete interfaces ethernet eth2 vif 200 description
+ - delete interfaces ethernet eth1 vif 200
+ - delete interfaces ethernet eth2 vif 200
- set interfaces ethernet eth2 description 'Overridden by Ansible'
- set interfaces ethernet eth2 mtu '1402'
after:
- - name: lo
- enabled: true
- name: eth0
enabled: true
speed: auto
duplex: auto
- name: eth1
enabled: true
- vifs:
- - vlan_id: 200
- enabled: true
- name: eth2
enabled: true
description: Overridden by Ansible
mtu: 1402
- vifs:
- - vlan_id: 200
- enabled: true
rendered:
commands:
- set interfaces ethernet eth1 description 'Configured by Ansible - Interface 1'
@@ -157,31 +136,21 @@ deleted:
commands:
- delete interfaces ethernet eth1 description
- delete interfaces ethernet eth1 mtu
- - delete interfaces ethernet eth1 vif 200 description
+ - delete interfaces ethernet eth1 vif 200
- delete interfaces ethernet eth2 description
- delete interfaces ethernet eth2 mtu
- - delete interfaces ethernet eth2 vif 200 description
+ - delete interfaces ethernet eth2 vif 200
after:
- - name: lo
- enabled: true
- name: eth0
enabled: true
speed: auto
duplex: auto
- name: eth1
enabled: true
- vifs:
- - vlan_id: 200
- enabled: true
- name: eth2
enabled: true
- vifs:
- - vlan_id: 200
- enabled: true
round_trip:
after:
- - name: lo
- enabled: true
- name: eth0
enabled: true
speed: auto
diff --git a/tests/integration/targets/vyos_interfaces/vars/pre-v1_5.yaml b/tests/integration/targets/vyos_interfaces/vars/pre-v1_5.yaml
new file mode 100644
index 00000000..1026b30e
--- /dev/null
+++ b/tests/integration/targets/vyos_interfaces/vars/pre-v1_5.yaml
@@ -0,0 +1,2 @@
+---
+# Remove the lo0 interface for older versions of VyOS (pre-v1.4)
diff --git a/tests/integration/targets/vyos_interfaces/vars/v1_5.yaml b/tests/integration/targets/vyos_interfaces/vars/v1_5.yaml
new file mode 100644
index 00000000..ed97d539
--- /dev/null
+++ b/tests/integration/targets/vyos_interfaces/vars/v1_5.yaml
@@ -0,0 +1 @@
+---
diff --git a/tests/integration/targets/vyos_l3_interfaces/vars/main.yaml b/tests/integration/targets/vyos_l3_interfaces/vars/main.yaml
index deec3faa..e9781e6a 100644
--- a/tests/integration/targets/vyos_l3_interfaces/vars/main.yaml
+++ b/tests/integration/targets/vyos_l3_interfaces/vars/main.yaml
@@ -1,7 +1,6 @@
---
merged:
before:
- - name: lo
- name: eth0
ipv4:
- address: dhcp
@@ -14,7 +13,6 @@ merged:
- set interfaces ethernet eth2 vif 101 address '198.51.100.130/25'
- set interfaces ethernet eth2 vif 101 address '2001:db8::20/32'
after:
- - name: lo
- name: eth0
ipv4:
- address: dhcp
@@ -33,7 +31,6 @@ merged:
ipv6:
- address: 2001:db8::20/32
populate:
- - name: lo
- name: eth1
ipv4:
- address: 192.0.2.14/24
@@ -57,7 +54,6 @@ replaced:
- delete interfaces ethernet eth1 address '192.0.2.14/24'
- set interfaces ethernet eth1 address '192.0.2.19/24'
after:
- - name: lo
- name: eth2
ipv6:
- address: 2001:db8::11/32
@@ -76,7 +72,6 @@ overridden:
- delete interfaces ethernet eth2 address '2001:db8::10/32'
- delete interfaces ethernet eth2 address '2001:db8::12/32'
after:
- - name: lo
- name: eth0
ipv4:
- address: dhcp
@@ -116,7 +111,6 @@ deleted:
- delete interfaces ethernet eth2 address '2001:db8::10/32'
- delete interfaces ethernet eth2 address '2001:db8::12/32'
after:
- - name: lo
- name: eth0
ipv4:
- address: dhcp
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_interfaces_config_vif.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_interfaces_config_vif.cfg
new file mode 100644
index 00000000..b1b6b4c2
--- /dev/null
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_interfaces_config_vif.cfg
@@ -0,0 +1,14 @@
+set interfaces ethernet eth0 address 'dhcp'
+set interfaces ethernet eth0 hw-id '08:00:27:7c:85:05'
+set interfaces ethernet eth1 description 'test-interface'
+set interfaces ethernet eth1 vif 200
+set interfaces ethernet eth1 vif 200 description 'VIF eth1.200'
+set interfaces ethernet eth1 vif 201
+set interfaces ethernet eth1 vif 201 description 'VIF eth1.201'
+set interfaces ethernet eth1 vif 201 disable
+set interfaces ethernet eth2 hw-id '08:00:27:04:85:99'
+set interfaces ethernet eth3 hw-id '08:00:27:1c:82:d1'
+set interfaces ethernet eth3 disable
+set interfaces ethernet eth3 description 'Ethernet 3'
+set interfaces wireguard wg02 description 'wire guard int 2'
+set interfaces loopback 'lo'
diff --git a/tests/unit/modules/network/vyos/test_vyos_interfaces.py b/tests/unit/modules/network/vyos/test_vyos_interfaces.py
index 14e49c36..8549d768 100644
--- a/tests/unit/modules/network/vyos/test_vyos_interfaces.py
+++ b/tests/unit/modules/network/vyos/test_vyos_interfaces.py
@@ -59,6 +59,8 @@ class TestVyosFirewallInterfacesModule(TestVyosModule):
"facts.interfaces.interfaces.InterfacesFacts.get_device_data",
)
self.execute_show_command = self.mock_execute_show_command.start()
+ # define the default fixture for the vyos_interfaces module
+ self.fixture_path = "vyos_interfaces_config.cfg"
def tearDown(self):
super(TestVyosFirewallInterfacesModule, self).tearDown()
@@ -70,7 +72,7 @@ class TestVyosFirewallInterfacesModule(TestVyosModule):
def load_fixtures(self, commands=None, filename=None):
def load_from_file(*args, **kwargs):
- return load_fixture("vyos_interfaces_config.cfg")
+ return load_fixture(self.fixture_path)
self.execute_show_command.side_effect = load_from_file
@@ -93,6 +95,52 @@ class TestVyosFirewallInterfacesModule(TestVyosModule):
]
self.execute_module(changed=True, commands=commands)
+ def test_vyos_interfaces_merged_retain_vif(self):
+ # we have a vif in eth1 at this point, so that should be retained
+ self.fixture_path = "vyos_interfaces_config_vif.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(name="bond1", description="Bond - 1", enabled=True),
+ dict(name="vtun1", description="vtun - 1", enabled=True),
+ dict(name="wg01", description="wg - 1", enabled=True),
+ ],
+ state="merged",
+ ),
+ )
+
+ commands = [
+ "set interfaces bonding bond1 description 'Bond - 1'",
+ "set interfaces openvpn vtun1 description 'vtun - 1'",
+ "set interfaces wireguard wg01 description 'wg - 1'",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_interfaces_merged_additional_vif(self):
+ # we have a vif in eth1 at this point, so that should be retained
+ self.fixture_path = "vyos_interfaces_config_vif.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth1",
+ vifs=[
+ dict(
+ vlan_id=105,
+ description="vlan 105",
+ ),
+ ],
+ ),
+ ],
+ state="merged",
+ ),
+ )
+
+ commands = [
+ "set interfaces ethernet eth1 vif 105 description 'vlan 105'",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
def test_vyos_interfaces_merged_idempotent(self):
set_module_args(
dict(
@@ -159,6 +207,102 @@ class TestVyosFirewallInterfacesModule(TestVyosModule):
]
self.execute_module(changed=True, commands=commands)
+ def test_vyos_interfaces_replaced_remove_vif(self):
+ # we have a vif in eth1 at this point, so that should be removed
+ self.fixture_path = "vyos_interfaces_config_vif.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth4",
+ description="Ethernet 4",
+ enabled=True,
+ speed="auto",
+ duplex="auto",
+ ),
+ dict(name="eth1", description="Configured by Ansible"),
+ ],
+ state="replaced",
+ ),
+ )
+
+ commands = [
+ "delete interfaces ethernet eth1 vif 200",
+ "delete interfaces ethernet eth1 vif 201",
+ "set interfaces ethernet eth1 description 'Configured by Ansible'",
+ "set interfaces ethernet eth4 description 'Ethernet 4'",
+ "set interfaces ethernet eth4 duplex 'auto'",
+ "set interfaces ethernet eth4 speed 'auto'",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_interfaces_merged_enable_vif(self):
+ # merge in enabling vif
+ self.fixture_path = "vyos_interfaces_config_vif.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth1",
+ vifs=[
+ dict(
+ vlan_id=201,
+ enabled=True,
+ ),
+ ],
+ ),
+ ],
+ state="merged",
+ ),
+ )
+
+ commands = [
+ "delete interfaces ethernet eth1 vif 201 disable",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_interfaces_replaced_retain_vif(self):
+ # we have a vif in eth1 at this point, so that should be removed
+ self.fixture_path = "vyos_interfaces_config_vif.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth4",
+ description="Ethernet 4",
+ enabled=True,
+ speed="auto",
+ duplex="auto",
+ ),
+ dict(
+ name="eth1",
+ description="Configured by Ansible",
+ vifs=[
+ dict(
+ vlan_id=200,
+ ),
+ dict(
+ vlan_id=201,
+ description="VIF eth1.201",
+ enabled=True,
+ ),
+ ],
+ ),
+ ],
+ state="replaced",
+ ),
+ )
+
+ commands = [
+ "delete interfaces ethernet eth1 vif 200 description",
+ "delete interfaces ethernet eth1 vif 201 disable",
+ "set interfaces ethernet eth1 description 'Configured by Ansible'",
+ "set interfaces ethernet eth4 description 'Ethernet 4'",
+ "set interfaces ethernet eth4 duplex 'auto'",
+ "set interfaces ethernet eth4 speed 'auto'",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
def test_vyos_interfaces_overridden_newinterface(self):
set_module_args(
dict(
@@ -187,6 +331,38 @@ class TestVyosFirewallInterfacesModule(TestVyosModule):
]
self.execute_module(changed=True, commands=commands)
+ def test_vyos_overridden_remove_vif(self):
+ # we have a vif in eth1 at this point, so that should be removed
+ self.fixture_path = "vyos_interfaces_config_vif.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth4",
+ description="Ethernet 4",
+ enabled=True,
+ speed="auto",
+ duplex="auto",
+ ),
+ dict(name="eth1", description="Configured by Ansible"),
+ ],
+ state="overridden",
+ ),
+ )
+
+ commands = [
+ "set interfaces ethernet eth1 description 'Configured by Ansible'",
+ "set interfaces ethernet eth4 description 'Ethernet 4'",
+ "set interfaces ethernet eth4 duplex 'auto'",
+ "set interfaces ethernet eth4 speed 'auto'",
+ "delete interfaces wireguard wg02 description",
+ "delete interfaces ethernet eth3 description",
+ "delete interfaces ethernet eth3 disable",
+ "delete interfaces ethernet eth1 vif 200",
+ "delete interfaces ethernet eth1 vif 201",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
def test_vyos_interfaces_idempotent_disable(self):
set_module_args(
dict(
@@ -198,7 +374,7 @@ class TestVyosFirewallInterfacesModule(TestVyosModule):
),
],
state="merged",
- )
+ ),
)
commands = []
@@ -215,8 +391,62 @@ class TestVyosFirewallInterfacesModule(TestVyosModule):
),
],
state="replaced",
- )
+ ),
)
commands = []
self.execute_module(changed=False, commands=commands)
+
+ def test_vyos_interfaces_deleted_remove_vif(self):
+ # we have a vif in eth1 at this point, so that should be removed
+ self.fixture_path = "vyos_interfaces_config_vif.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(name="eth1"),
+ ],
+ state="deleted",
+ ),
+ )
+
+ commands = [
+ "delete interfaces ethernet eth1 vif 200",
+ "delete interfaces ethernet eth1 vif 201",
+ "delete interfaces ethernet eth1 description",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_interfaces_deleted_remove_all(self):
+ # we have a vif in eth1 at this point, so that should be removed
+ set_module_args(
+ dict(
+ config=[],
+ state="deleted",
+ ),
+ )
+
+ commands = [
+ "delete interfaces ethernet eth1 description",
+ "delete interfaces ethernet eth3 description",
+ "delete interfaces ethernet eth3 disable",
+ "delete interfaces wireguard wg02 description",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_interfaces_replaced_bad_name(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="int4",
+ description="Ethernet 4",
+ enabled=True,
+ speed="auto",
+ duplex="auto",
+ ),
+ ],
+ state="replaced",
+ ),
+ )
+
+ self.execute_module(failed=True)