diff options
| author | omnom62 <75066712+omnom62@users.noreply.github.com> | 2026-08-21 22:08:02 +1000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-21 15:08:02 +0300 |
| commit | d80f14eef50403f0851c9a12b77890c9bf1f3c4d (patch) | |
| tree | 02502420e51685cc1c6cdd382e7521f375d5ec18 /tests/unit/modules | |
| parent | 127dd3e7ef0956eae80cc487c1099e7efebc891e (diff) | |
| download | vyos.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.cfg | 1 | ||||
| -rw-r--r-- | tests/unit/modules/network/vyos/test_vyos_interfaces.py | 185 |
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)) |
