diff --git a/changelogs/fragments/T7260_edgecase_commands.yml b/changelogs/fragments/T7260_edgecase_commands.yml new file mode 100644 index 000000000..deb24b1ce --- /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 16a91d4eb..ddb4af802 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 @@ def _render_grp_mem(self, attr, w, h, opr): ) 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 9e854fa6d..c883ca783 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 efa0e4548..b8bca0cc9 100644 --- a/tests/unit/modules/network/vyos/test_vyos_firewall_global14.py +++ b/tests/unit/modules/network/vyos/test_vyos_firewall_global14.py @@ -205,6 +205,10 @@ def test_vyos_firewall_global_set_01_merged_idem(self): config=dict( group=dict( address_group=[ + dict( + afi="ipv4", + name="A-EMPTY", + ), dict( afi="ipv4", name="RND-HOSTS", @@ -323,6 +327,7 @@ def test_vyos_firewall_global_set_01_replaced(self): ), ) 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", @@ -356,6 +361,10 @@ def test_vyos_firewall_global_set_01_replaced_idem(self): ], group=dict( address_group=[ + dict( + afi="ipv4", + name="A-EMPTY", + ), dict( afi="ipv4", name="RND-HOSTS", @@ -484,6 +493,7 @@ def test_vyos_firewall_global_set_02_replaced(self): ), ) 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",