diff options
author | Gaige B Paulsen <gaige@cluetrust.com> | 2025-01-26 15:00:56 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-27 06:00:56 +1000 |
commit | 0a0ab13f84e3930e203a412ae08c127b282ab675 (patch) | |
tree | b52db22cfa3fc0994c0d3a2ccf20e34b32203e55 /tests/unit | |
parent | fda50fe09d21b365264c6213bc5883201c460a29 (diff) | |
download | vyos.vyos-0a0ab13f84e3930e203a412ae08c127b282ab675.tar.gz vyos.vyos-0a0ab13f84e3930e203a412ae08c127b282ab675.zip |
T7006: update to fix interface tests (#374)
* T7008: update to fix interface tests
* T7006: fix: tests for interfaces
* T7006: further work on interfaces
* test: attempt to fix codecov on branch
* test: unwind cli_config loops for 1.4
* fix: vif handling in replace,override,delete
* fix: vif handling and docs
Diffstat (limited to 'tests/unit')
-rw-r--r-- | tests/unit/modules/network/vyos/fixtures/vyos_interfaces_config_vif.cfg | 14 | ||||
-rw-r--r-- | tests/unit/modules/network/vyos/test_vyos_interfaces.py | 236 |
2 files changed, 247 insertions, 3 deletions
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) |