Skip to content

Commit 29e8caf

Browse files
RubenNLomnom62
andauthored
T7260 Remove last firewall group member. (#403)
Co-authored-by: omnom62 <[email protected]>
1 parent b0b3adf commit 29e8caf

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
@@ -373,6 +373,8 @@ def _render_grp_mem(self, attr, w, h, opr):
373373
)
374374
elif not opr and key in l_set:
375375
if key == "name" and self._is_grp_del(h, want, key):
376+
if commands[-1] == cmd + " " + want["name"] + " " + self._grp_type(attr):
377+
commands.pop()
376378
commands.append(cmd + " " + want["name"])
377379
continue
378380
if not (h and in_target_not_none(h, key)) and not self._is_grp_del(h, want, "name"):
@@ -435,6 +437,14 @@ def _render_ports_addrs(self, attr, w, h, opr, cmd, name, type):
435437
+ " "
436438
+ member[self._get_mem_type(type)],
437439
)
440+
elif not opr and not have:
441+
commands.append(
442+
cmd
443+
+ " "
444+
+ name
445+
+ " "
446+
+ self._grp_type(type),
447+
)
438448
return commands
439449

440450
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 network-group RND description",
@@ -376,6 +383,7 @@ def test_vyos_firewall_global_set_02_replaced(self):
376383
),
377384
)
378385
commands = [
386+
"delete firewall group address-group DELETE-HOSTS",
379387
"delete firewall group address-group RND-HOSTS address 192.0.2.3",
380388
"delete firewall group address-group RND-HOSTS address 192.0.2.5",
381389
"delete firewall ipv6-src-route",
@@ -411,6 +419,14 @@ def test_vyos_firewall_global_set_01_replaced_idem(self):
411419
dict(address="192.0.2.5"),
412420
],
413421
),
422+
dict(
423+
afi="ipv4",
424+
name="DELETE-HOSTS",
425+
description="The (single) last address from this group will be deleted in the tests",
426+
members=[
427+
dict(address='1.2.3.4'),
428+
]
429+
),
414430
dict(
415431
afi="ipv6",
416432
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",
@@ -349,6 +356,14 @@ def test_vyos_firewall_global_set_01_replaced_idem(self):
349356
dict(address="192.0.2.5"),
350357
],
351358
),
359+
dict(
360+
afi="ipv4",
361+
name="DELETE-HOSTS",
362+
description="The (single) last address from this group will be deleted in the tests",
363+
members=[
364+
dict(address='1.2.3.4'),
365+
]
366+
),
352367
dict(
353368
afi="ipv6",
354369
name="LOCAL-v6",
@@ -451,6 +466,7 @@ def test_vyos_firewall_global_set_02_replaced(self):
451466
"delete firewall global-options send-redirects",
452467
"set firewall global-options state-policy related action 'drop'",
453468
"delete firewall global-options state-policy related log-level",
469+
"delete firewall group address-group DELETE-HOSTS",
454470
"set firewall global-options state-policy invalid action 'reject'",
455471
"set firewall group address-group RND-HOSTS address 192.0.2.7",
456472
"set firewall group address-group RND-HOSTS address 192.0.2.9",

0 commit comments

Comments
 (0)