diff options
| author | Ruben van Dijk <15885455+RubenNL@users.noreply.github.com> | 2025-11-03 14:58:17 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-03 13:58:17 +0000 |
| commit | 1ccb6f9f494a552d1d0004906d0463ddcdf374db (patch) | |
| tree | a975708214dbfe73e78f9d7ee5a31cbd7f6fe6c9 | |
| parent | 70630267059f9d90f7c0e7bf444b91d5ad52cecd (diff) | |
| download | vyos.vyos-1ccb6f9f494a552d1d0004906d0463ddcdf374db.tar.gz vyos.vyos-1ccb6f9f494a552d1d0004906d0463ddcdf374db.zip | |
T7964 - Fix edgecase with empty `commands` array. (#439)
* T7964 - Add failing test.
* T7964 - Fix "IndexError: list index out of range".
4 files changed, 15 insertions, 2 deletions
diff --git a/changelogs/fragments/T7260_edgecase_commands.yml b/changelogs/fragments/T7260_edgecase_commands.yml new file mode 100644 index 00000000..deb24b1c --- /dev/null +++ b/changelogs/fragments/T7260_edgecase_commands.yml @@ -0,0 +1,2 @@ +bugfixes: + - Fix edgecase with empty `commands` array. diff --git a/plugins/module_utils/network/vyos/config/firewall_global/firewall_global.py b/plugins/module_utils/network/vyos/config/firewall_global/firewall_global.py index 16a91d4e..ddb4af80 100644 --- a/plugins/module_utils/network/vyos/config/firewall_global/firewall_global.py +++ b/plugins/module_utils/network/vyos/config/firewall_global/firewall_global.py @@ -368,7 +368,7 @@ class Firewall_global(ConfigBase): ) elif not opr and key in l_set: if key == "name" and self._is_grp_del(h, want, key): - if commands[-1] == cmd + " " + want["name"] + " " + self._grp_type( + if len(commands) > 0 and commands[-1] == cmd + " " + want["name"] + " " + self._grp_type( attr, ): commands.pop() diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config_v14.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config_v14.cfg index 9e854fa6..c883ca78 100644 --- a/tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config_v14.cfg +++ b/tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config_v14.cfg @@ -1,3 +1,4 @@ +set firewall group address-group A-EMPTY set firewall group address-group RND-HOSTS address 192.0.2.1 set firewall group address-group RND-HOSTS address 192.0.2.3 set firewall group address-group RND-HOSTS address 192.0.2.5 @@ -20,4 +21,4 @@ set firewall global-options ipv6-src-route 'enable' set firewall global-options send-redirects 'enable' set firewall zone ZONE-TEST interface 'eth0.1234' set firewall zone ZONE-TEST description 'zone-test test description' -set firewall group address-group ZONE-TEST address '1.2.3.4'
\ No newline at end of file +set firewall group address-group ZONE-TEST address '1.2.3.4' diff --git a/tests/unit/modules/network/vyos/test_vyos_firewall_global14.py b/tests/unit/modules/network/vyos/test_vyos_firewall_global14.py index efa0e454..b8bca0cc 100644 --- a/tests/unit/modules/network/vyos/test_vyos_firewall_global14.py +++ b/tests/unit/modules/network/vyos/test_vyos_firewall_global14.py @@ -207,6 +207,10 @@ class TestVyosFirewallRulesModule14(TestVyosModule): address_group=[ dict( afi="ipv4", + name="A-EMPTY", + ), + dict( + afi="ipv4", name="RND-HOSTS", description="This group has the Management hosts address lists", members=[ @@ -323,6 +327,7 @@ class TestVyosFirewallRulesModule14(TestVyosModule): ), ) commands = [ + "delete firewall group address-group A-EMPTY", "delete firewall group address-group RND-HOSTS address 192.0.2.3", "delete firewall group address-group RND-HOSTS address 192.0.2.5", "delete firewall group address-group DELETE-HOSTS address", @@ -358,6 +363,10 @@ class TestVyosFirewallRulesModule14(TestVyosModule): address_group=[ dict( afi="ipv4", + name="A-EMPTY", + ), + dict( + afi="ipv4", name="RND-HOSTS", description="This group has the Management hosts address lists", members=[ @@ -484,6 +493,7 @@ class TestVyosFirewallRulesModule14(TestVyosModule): ), ) commands = [ + "delete firewall group address-group A-EMPTY", "delete firewall group address-group RND-HOSTS address 192.0.2.3", "delete firewall group address-group RND-HOSTS address 192.0.2.5", "delete firewall group address-group ZONE-TEST address 1.2.3.4", |
