Skip to content

Commit 1cf8e6c

Browse files
committed
T7260 Remove last firewall group member.
1 parent 41e4b07 commit 1cf8e6c

File tree

6 files changed

+49
-0
lines changed

6 files changed

+49
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
bugfixes:
3+
- vyos_firewall_global - Fix removing last member of a firewall group.

plugins/module_utils/network/vyos/config/firewall_global/firewall_global.py

+10
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,8 @@ def _render_grp_mem(self, attr, w, h, opr):
372372
)
373373
elif not opr and key in l_set:
374374
if key == "name" and self._is_grp_del(h, want, key):
375+
if commands[-1] == cmd + " " + want["name"] + " " + self._grp_type(attr):
376+
commands.pop()
375377
commands.append(cmd + " " + want["name"])
376378
continue
377379
if not (h and self._in_target(h, key)) and not self._is_grp_del(
@@ -438,6 +440,14 @@ def _render_ports_addrs(self, attr, w, h, opr, cmd, name, type):
438440
+ " "
439441
+ member[self._get_mem_type(type)],
440442
)
443+
elif not opr and not have:
444+
commands.append(
445+
cmd
446+
+ " "
447+
+ name
448+
+ " "
449+
+ self._grp_type(type),
450+
)
441451
return commands
442452

443453
def _get_mem_type(self, group):

tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config.cfg

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ set firewall group address-group RND-HOSTS address 192.0.2.1
22
set firewall group address-group RND-HOSTS address 192.0.2.3
33
set firewall group address-group RND-HOSTS address 192.0.2.5
44
set firewall group address-group RND-HOSTS description 'This group has the Management hosts address lists'
5+
set firewall group address-group DELETE-HOSTS address 1.2.3.4
6+
set firewall group address-group DELETE-HOSTS description 'The (single) last address from this group will be deleted in the tests'
57
set firewall group ipv6-address-group LOCAL-v6 address ::1
68
set firewall group ipv6-address-group LOCAL-v6 address fdec:2503:89d6:59b3::1
79
set firewall group ipv6-address-group LOCAL-v6 description 'This group has the hosts address lists of this machine'

tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config_v14.cfg

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ set firewall group address-group RND-HOSTS address 192.0.2.1
22
set firewall group address-group RND-HOSTS address 192.0.2.3
33
set firewall group address-group RND-HOSTS address 192.0.2.5
44
set firewall group address-group RND-HOSTS description 'This group has the Management hosts address lists'
5+
set firewall group address-group DELETE-HOSTS address 1.2.3.4
6+
set firewall group address-group DELETE-HOSTS description 'The (single) last address from this group will be deleted in the tests'
57
set firewall group ipv6-address-group LOCAL-v6 address ::1
68
set firewall group ipv6-address-group LOCAL-v6 address fdec:2503:89d6:59b3::1
79
set firewall group ipv6-address-group LOCAL-v6 description 'This group has the hosts address lists of this machine'

tests/unit/modules/network/vyos/test_vyos_firewall_global.py

+16
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,12 @@ def test_vyos_firewall_global_set_01_replaced(self):
268268
dict(address="192.0.2.9"),
269269
],
270270
),
271+
dict(
272+
afi="ipv4",
273+
name="DELETE-HOSTS",
274+
description="The (single) last address from this group will be deleted in the tests",
275+
# No members here
276+
),
271277
dict(
272278
afi="ipv6",
273279
name="LOCAL-v6",
@@ -309,6 +315,7 @@ def test_vyos_firewall_global_set_01_replaced(self):
309315
"delete firewall send-redirects",
310316
"delete firewall group address-group RND-HOSTS address 192.0.2.3",
311317
"delete firewall group address-group RND-HOSTS address 192.0.2.5",
318+
"delete firewall group address-group DELETE-HOSTS address",
312319
"set firewall group address-group RND-HOSTS address 192.0.2.7",
313320
"set firewall group address-group RND-HOSTS address 192.0.2.9",
314321
"delete firewall group ipv6-address-group LOCAL-v6 address fdec:2503:89d6:59b3::1",
@@ -375,6 +382,7 @@ def test_vyos_firewall_global_set_02_replaced(self):
375382
),
376383
)
377384
commands = [
385+
"delete firewall group address-group DELETE-HOSTS",
378386
"delete firewall group address-group RND-HOSTS address 192.0.2.3",
379387
"delete firewall group address-group RND-HOSTS address 192.0.2.5",
380388
"delete firewall ipv6-src-route",
@@ -410,6 +418,14 @@ def test_vyos_firewall_global_set_01_replaced_idem(self):
410418
dict(address="192.0.2.5"),
411419
],
412420
),
421+
dict(
422+
afi="ipv4",
423+
name="DELETE-HOSTS",
424+
description="The (single) last address from this group will be deleted in the tests",
425+
members=[
426+
dict(address='1.2.3.4'),
427+
]
428+
),
413429
dict(
414430
afi="ipv6",
415431
name="LOCAL-v6",

tests/unit/modules/network/vyos/test_vyos_firewall_global14.py

+16
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,12 @@ def test_vyos_firewall_global_set_01_replaced(self):
271271
dict(address="192.0.2.9"),
272272
],
273273
),
274+
dict(
275+
afi="ipv4",
276+
name="DELETE-HOSTS",
277+
description="The (single) last address from this group will be deleted in the tests",
278+
# No members here
279+
),
274280
dict(
275281
afi="ipv6",
276282
name="LOCAL-v6",
@@ -310,6 +316,7 @@ def test_vyos_firewall_global_set_01_replaced(self):
310316
commands = [
311317
"delete firewall group address-group RND-HOSTS address 192.0.2.3",
312318
"delete firewall group address-group RND-HOSTS address 192.0.2.5",
319+
"delete firewall group address-group DELETE-HOSTS address",
313320
"delete firewall global-options all-ping",
314321
"delete firewall global-options state-policy related",
315322
"delete firewall global-options ipv6-src-route",
@@ -348,6 +355,14 @@ def test_vyos_firewall_global_set_01_replaced_idem(self):
348355
dict(address="192.0.2.5"),
349356
],
350357
),
358+
dict(
359+
afi="ipv4",
360+
name="DELETE-HOSTS",
361+
description="The (single) last address from this group will be deleted in the tests",
362+
members=[
363+
dict(address='1.2.3.4'),
364+
]
365+
),
351366
dict(
352367
afi="ipv6",
353368
name="LOCAL-v6",
@@ -450,6 +465,7 @@ def test_vyos_firewall_global_set_02_replaced(self):
450465
"delete firewall global-options send-redirects",
451466
"set firewall global-options state-policy related action 'drop'",
452467
"delete firewall global-options state-policy related log-level",
468+
"delete firewall group address-group DELETE-HOSTS",
453469
"set firewall global-options state-policy invalid action 'reject'",
454470
"set firewall group address-group RND-HOSTS address 192.0.2.7",
455471
"set firewall group address-group RND-HOSTS address 192.0.2.9",

0 commit comments

Comments
 (0)