summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuben van Dijk <15885455+RubenNL@users.noreply.github.com>2025-11-03 14:58:17 +0100
committerGitHub <noreply@github.com>2025-11-03 13:58:17 +0000
commit1ccb6f9f494a552d1d0004906d0463ddcdf374db (patch)
treea975708214dbfe73e78f9d7ee5a31cbd7f6fe6c9
parent70630267059f9d90f7c0e7bf444b91d5ad52cecd (diff)
downloadvyos.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".
-rw-r--r--changelogs/fragments/T7260_edgecase_commands.yml2
-rw-r--r--plugins/module_utils/network/vyos/config/firewall_global/firewall_global.py2
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config_v14.cfg3
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_firewall_global14.py10
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",