summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authoromnom62 <75066712+omnom62@users.noreply.github.com>2026-08-21 22:08:02 +1000
committerGitHub <noreply@github.com>2026-08-21 15:08:02 +0300
commitd80f14eef50403f0851c9a12b77890c9bf1f3c4d (patch)
tree02502420e51685cc1c6cdd382e7521f375d5ec18 /tests
parent127dd3e7ef0956eae80cc487c1099e7efebc891e (diff)
downloadvyos.vyos-d80f14eef50403f0851c9a12b77890c9bf1f3c4d.tar.gz
vyos.vyos-d80f14eef50403f0851c9a12b77890c9bf1f3c4d.zip
T8349: VRF config for interfaces (#449)
* VRF config for interfaces
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/_parsed_config.cfg1
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml9
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/_remove_config.yaml12
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/_setup_vrfs.yaml10
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/merged.yaml3
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/overridden.yaml1
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/rendered.yaml3
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml1
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/rtt.yaml4
-rw-r--r--tests/integration/targets/vyos_interfaces/vars/main.yaml12
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_interfaces_config_vrf.cfg1
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_interfaces.py185
12 files changed, 240 insertions, 2 deletions
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/_parsed_config.cfg b/tests/integration/targets/vyos_interfaces/tests/cli/_parsed_config.cfg
index 088354d8..cc47967c 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/_parsed_config.cfg
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/_parsed_config.cfg
@@ -4,6 +4,7 @@ set interfaces ethernet eth1 mtu '1500'
set interfaces ethernet eth1 vif 100 description 'Eth1 - VIF 100'
set interfaces ethernet eth1 vif 100 mtu '1404'
set interfaces ethernet eth1 vif 101 description 'Eth1 - VIF 101'
+set interfaces ethernet eth1 vrf 'pink'
set interfaces ethernet eth2 description 'Configured by Ansible - Interface 2 (ADMIN DOWN)'
set interfaces ethernet eth2 disable
set interfaces ethernet eth2 hw-id '08:00:27:d8:70:b0'
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml
index cbc994ba..617b2350 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml
@@ -4,7 +4,9 @@
- ansible.builtin.include_tasks: _remove_config.yaml
-- name: Setup
+- ansible.builtin.include_tasks: _setup_vrfs.yaml
+
+- name: Setup interfaces
ansible.netcommon.cli_config:
config: |-
{% for intf in ('eth1','eth2') %}
@@ -15,3 +17,8 @@
set interfaces ethernet "{{ intf }}" vif 200
set interfaces ethernet "{{ intf }}" vif 200 description 'VIF - 200'
{% endfor %}
+
+- name: Setup - Add VRF to eth2
+ ansible.netcommon.cli_config:
+ config: |-
+ set interfaces ethernet eth2 vrf 'green'
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 73f481bf..1f74cddf 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/_remove_config.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/_remove_config.yaml
@@ -10,3 +10,15 @@
delete interfaces ethernet "{{ intf }}" disable
delete interfaces ethernet "{{ intf }}" vif
{% endfor %}
+
+- name: Cleanup - Remove VRF from eth
+ ansible.netcommon.cli_config:
+ config: |-
+ delete interfaces ethernet eth2 vrf
+ delete interfaces ethernet eth1 vrf
+ ignore_errors: true
+
+- name: Cleanup - Remove VRFs
+ ansible.netcommon.cli_config:
+ config: |-
+ delete vrf
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/_setup_vrfs.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/_setup_vrfs.yaml
new file mode 100644
index 00000000..eab29f11
--- /dev/null
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/_setup_vrfs.yaml
@@ -0,0 +1,10 @@
+---
+- name: Setup - Add VRFs
+ ansible.netcommon.cli_config:
+ config: |-
+ set vrf name green description 'green'
+ set vrf name green table 101
+ set vrf name green vni 501
+ set vrf name red description 'red'
+ set vrf name red table 102
+ set vrf name red vni 502
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/merged.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/merged.yaml
index decdeca2..c636fe35 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/merged.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/merged.yaml
@@ -4,6 +4,8 @@
- include_tasks: _remove_config.yaml
+- include_tasks: _setup_vrfs.yaml
+
- block:
- name: Merge the provided configuration with the existing running configuration
register: result
@@ -21,6 +23,7 @@
- vlan_id: 101
description: Eth1 - VIF 101
+ vrf: red
- name: eth2
description: Configured by Ansible - Interface 2 (ADMIN DOWN)
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/overridden.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/overridden.yaml
index 5d87ab68..905470f5 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/overridden.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/overridden.yaml
@@ -16,6 +16,7 @@
- name: eth2
description: Overridden by Ansible
mtu: 1402
+ vrf: red
state: overridden
- name: Assert that before dicts were correctly generated
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/rendered.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/rendered.yaml
index 7b66c50e..83095195 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/rendered.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/rendered.yaml
@@ -27,6 +27,7 @@
- vlan_id: 101
description: Eth1 - VIF 101
enabled: true
+ vrf: "pink"
- name: eth2
description: Configured by Ansible - Interface 2 (ADMIN DOWN)
mtu: 1406
@@ -36,6 +37,6 @@
- name: Assert that correct set of commands were generated
assert:
that:
- - "{{ rendered['commands'] | symmetric_difference(result['rendered']) |length == 0 }}"
+ - "{{ rendered['commands'] | symmetric_difference(result['rendered']) | length == 0 }}"
always:
- include_tasks: _remove_config.yaml
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml
index 5cfa4523..21ddaf40 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml
@@ -18,6 +18,7 @@
- name: eth2
mtu: 1400
description: Replaced by Ansible
+ vrf: red
state: replaced
- name: Assert that correct set of commands were generated
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/rtt.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/rtt.yaml
index e6753cba..667da6e9 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/rtt.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/rtt.yaml
@@ -4,6 +4,8 @@
- include_tasks: _remove_config.yaml
+- include_tasks: _setup_vrfs.yaml
+
- block:
- name: Apply the provided configuration (base config)
register: base_config
@@ -30,6 +32,7 @@
description: Interface - 2
enabled: true
mtu: 1409
+ vrf: red
state: merged
- name: Gather interfaces facts
@@ -55,6 +58,7 @@
description: Eth1 - VIF 101 (WILL BE REMOVED)
enabled: true
mtu: 1401
+ vrf: green
- name: eth2
description: Interface 2 (ADMIN DOWN) (WILL BE REVERTED)
diff --git a/tests/integration/targets/vyos_interfaces/vars/main.yaml b/tests/integration/targets/vyos_interfaces/vars/main.yaml
index c65771f2..61f30049 100644
--- a/tests/integration/targets/vyos_interfaces/vars/main.yaml
+++ b/tests/integration/targets/vyos_interfaces/vars/main.yaml
@@ -17,6 +17,7 @@ merged:
- set interfaces ethernet eth1 vif 100 description 'Eth1 - VIF 100'
- set interfaces ethernet eth1 vif 100 mtu '1404'
- set interfaces ethernet eth1 vif 101 description 'Eth1 - VIF 101'
+ - set interfaces ethernet eth1 vrf 'red'
- set interfaces ethernet eth2 description 'Configured by Ansible - Interface 2 (ADMIN DOWN)'
- set interfaces ethernet eth2 mtu '1406'
- set interfaces ethernet eth2 disable
@@ -39,6 +40,7 @@ merged:
- vlan_id: 101
description: Eth1 - VIF 101
enabled: true
+ vrf: red
- name: eth2
description: Configured by Ansible - Interface 2 (ADMIN DOWN)
mtu: 1406
@@ -64,6 +66,7 @@ populate:
- vlan_id: 200
enabled: true
description: VIF - 200
+ vrf: "green"
- name: eth0
enabled: true
duplex: auto
@@ -81,6 +84,7 @@ replaced:
- delete interfaces ethernet eth2 duplex
- set interfaces ethernet eth2 description 'Replaced by Ansible'
- set interfaces ethernet eth2 mtu '1400'
+ - set interfaces ethernet eth2 vrf 'red'
after:
- name: eth1
description: Replaced by Ansible
@@ -93,6 +97,7 @@ replaced:
mtu: 1400
description: Replaced by Ansible
enabled: true
+ vrf: red
- name: eth0
enabled: true
duplex: auto
@@ -111,6 +116,7 @@ parsed:
- vlan_id: 101
description: Eth1 - VIF 101
enabled: true
+ vrf: pink
- name: eth2
description: Configured by Ansible - Interface 2 (ADMIN DOWN)
mtu: 1406
@@ -127,6 +133,7 @@ overridden:
- delete interfaces ethernet eth2 duplex
- set interfaces ethernet eth2 description 'Overridden by Ansible'
- set interfaces ethernet eth2 mtu '1402'
+ - set interfaces ethernet eth2 vrf 'red'
after:
- name: eth0
enabled: true
@@ -138,6 +145,7 @@ overridden:
enabled: true
description: Overridden by Ansible
mtu: 1402
+ vrf: red
rendered:
commands:
- set interfaces ethernet eth0 duplex 'auto'
@@ -149,6 +157,7 @@ rendered:
- set interfaces ethernet eth1 vif 100 description 'Eth1 - VIF 100'
- set interfaces ethernet eth1 vif 100 mtu '1404'
- set interfaces ethernet eth1 vif 101 description 'Eth1 - VIF 101'
+ - set interfaces ethernet eth1 vrf 'pink'
- set interfaces ethernet eth2 description 'Configured by Ansible - Interface 2 (ADMIN DOWN)'
- set interfaces ethernet eth2 mtu '1406'
@@ -164,6 +173,7 @@ deleted:
- delete interfaces ethernet eth2 vif 200
- delete interfaces ethernet eth2 speed
- delete interfaces ethernet eth2 duplex
+ - delete interfaces ethernet eth2 vrf
after:
- name: eth0
enabled: true
@@ -193,7 +203,9 @@ round_trip:
description: Eth1 - VIF 101 (WILL BE REMOVED)
enabled: true
mtu: 1401
+ vrf: green
- name: eth2
description: Interface 2 (ADMIN DOWN) (WILL BE REVERTED)
mtu: 1406
enabled: false
+ vrf: red
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_interfaces_config_vrf.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_interfaces_config_vrf.cfg
new file mode 100644
index 00000000..39afd31b
--- /dev/null
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_interfaces_config_vrf.cfg
@@ -0,0 +1 @@
+set interfaces ethernet eth2 vrf 'green'
diff --git a/tests/unit/modules/network/vyos/test_vyos_interfaces.py b/tests/unit/modules/network/vyos/test_vyos_interfaces.py
index d135202c..a8f812c1 100644
--- a/tests/unit/modules/network/vyos/test_vyos_interfaces.py
+++ b/tests/unit/modules/network/vyos/test_vyos_interfaces.py
@@ -235,6 +235,34 @@ class TestVyosInterfacesModule(TestVyosModule):
]
self.execute_module(changed=True, commands=commands)
+ def test_vyos_interfaces_replaced_remove_vrf(self):
+ # we have a vrf in eth2 at this point, so that should be removed
+ self.fixture_path = "vyos_interfaces_config_vrf.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth4",
+ description="Ethernet 4",
+ enabled=True,
+ speed="auto",
+ duplex="auto",
+ ),
+ dict(name="eth2", description="Configured by Ansible"),
+ ],
+ state="replaced",
+ ),
+ )
+
+ commands = [
+ "delete interfaces ethernet eth2 vrf",
+ "set interfaces ethernet eth2 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"
@@ -362,6 +390,34 @@ class TestVyosInterfacesModule(TestVyosModule):
]
self.execute_module(changed=True, commands=commands)
+ def test_vyos_overridden_remove_vrf(self):
+ # we have a vrf in eth2 at this point, so that should be removed
+ self.fixture_path = "vyos_interfaces_config_vrf.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth4",
+ description="Ethernet 4",
+ enabled=True,
+ speed="auto",
+ duplex="auto",
+ ),
+ dict(name="eth2", description="Configured by Ansible"),
+ ],
+ state="overridden",
+ ),
+ )
+
+ commands = [
+ "set interfaces ethernet eth2 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 ethernet eth2 vrf",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
def test_vyos_interfaces_idempotent_disable(self):
set_module_args(
dict(
@@ -415,6 +471,23 @@ class TestVyosInterfacesModule(TestVyosModule):
]
self.execute_module(changed=True, commands=commands)
+ def test_vyos_interfaces_deleted_remove_vrf(self):
+ # we have a vrf in eth2 at this point, so that should be removed
+ self.fixture_path = "vyos_interfaces_config_vrf.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(name="eth2"),
+ ],
+ state="deleted",
+ ),
+ )
+
+ commands = [
+ "delete interfaces ethernet eth2 vrf",
+ ]
+ 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(
@@ -449,3 +522,115 @@ class TestVyosInterfacesModule(TestVyosModule):
)
self.execute_module(failed=True)
+
+ def test_vyos_interfaces_merged_idempotent_vrf(self):
+
+ self.fixture_path = "vyos_interfaces_config_vrf.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(name="eth2", vrf="green"),
+ ],
+ state="merged",
+ ),
+ )
+
+ commands = []
+ self.execute_module(changed=False, commands=commands)
+
+ def test_vyos_interfaces_replaced_idempotent_vrf(self):
+
+ self.fixture_path = "vyos_interfaces_config_vrf.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(name="eth2", vrf="green"),
+ ],
+ state="replaced",
+ ),
+ )
+
+ commands = []
+ self.execute_module(changed=False, commands=commands)
+
+ def test_vyos_interfaces_overridden_idempotent_vrf(self):
+
+ self.fixture_path = "vyos_interfaces_config_vrf.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(name="eth2", vrf="green"),
+ ],
+ state="overridden",
+ ),
+ )
+
+ commands = []
+ self.execute_module(changed=False, commands=commands)
+
+ def test_vyos_interfaces_merged_additional_vrf(self):
+
+ self.fixture_path = "vyos_interfaces_config_vrf.cfg"
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth1",
+ vrf="pink",
+ ),
+ ],
+ state="merged",
+ ),
+ )
+
+ commands = [
+ "set interfaces ethernet eth1 vrf 'pink'",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_interfaces_gathered_vrf(self):
+ # gathered facts should surface the vrf set on eth2
+ self.fixture_path = "vyos_interfaces_config_vrf.cfg"
+ set_module_args(
+ dict(
+ config=[],
+ state="gathered",
+ ),
+ )
+
+ result = self.execute_module(changed=False)
+ eth2_facts = [i for i in result["gathered"] if i["name"] == "eth2"][0]
+ self.assertEqual(eth2_facts["vrf"], "green")
+
+ def test_vyos_interfaces_parsed_vrf(self):
+ # parsing a running_config string should surface vrf on eth2
+ set_module_args(
+ dict(
+ running_config="set interfaces ethernet eth2 vrf 'green'",
+ state="parsed",
+ ),
+ )
+
+ result = self.execute_module(changed=False)
+ eth2_facts = [i for i in result["parsed"] if i["name"] == "eth2"][0]
+ self.assertEqual(eth2_facts["vrf"], "green")
+
+ def test_vyos_interfaces_rendered_vrf(self):
+ # rendered output should include the vrf set command without touching a device
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth1",
+ vrf="pink",
+ ),
+ ],
+ state="rendered",
+ ),
+ )
+
+ result = self.execute_module(changed=False)
+ commands = [
+ "set interfaces ethernet eth1 vrf 'pink'",
+ ]
+ self.assertEqual(sorted(result["rendered"]), sorted(commands))