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 | |
| 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')
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)) |
