summaryrefslogtreecommitdiff
path: root/tests/unit/modules
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/unit/modules
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/unit/modules')
-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
2 files changed, 186 insertions, 0 deletions
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))