Skip to content

Commit 7d0b401

Browse files
committed
proxmox_firewall: create/delete group
1 parent f5f231c commit 7d0b401

File tree

1 file changed

+35
-2
lines changed

1 file changed

+35
-2
lines changed

plugins/modules/proxmox_firewall.py

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ def get_proxmox_args():
3232
vmid=dict(type="int", required=False),
3333
vnet=dict(type="str", required=False),
3434
pos=dict(type="int", required=False),
35+
group_conf=dict(type="bool", default=False),
36+
group=dict(type="str", required=False),
37+
comment=dict(type="str", required=False),
3538
rules=dict(
3639
type="list",
3740
elements="dict",
@@ -107,19 +110,49 @@ def run(self):
107110
rules_obj = firewall_obj().rules
108111

109112
if state == "present":
113+
if self.params.get('group_conf'):
114+
self.create_group(group=self.params.get('group'), comment=self.params.get('comment'))
110115
if rules is not None:
111116
self.create_fw_rules(rules_obj=rules_obj, rules=rules)
112117
elif state == "update":
118+
if self.params.get('group_conf'):
119+
self.create_group(group=self.params.get('group'), comment=self.params.get('comment'))
113120
if rules is not None:
114121
self.update_fw_rules(rules_obj=rules_obj, rules=rules)
115122
elif state == "absent":
116-
self.delete_fw_rule(rules_obj=rules_obj, pos=self.params.get('pos'))
123+
if self.params.get('pos'):
124+
self.delete_fw_rule(rules_obj=rules_obj, pos=self.params.get('pos'))
125+
if self.params.get('group_conf'):
126+
self.delete_group(group_name=self.params.get('group'))
117127
else:
118-
rules = self.get_fw_rules(rules_obj)
128+
rules = self.get_fw_rules(rules_obj, pos=self.params.get('pos'))
119129
self.module.exit_json(
120130
changed=False, firewall_rules=rules, msg=f'successfully retrieved firewall rules'
121131
)
122132

133+
def create_group(self, group, comment=None):
134+
try:
135+
self.proxmox_api.cluster().firewall().groups.post(group=group, comment=comment)
136+
self.module.exit_json(
137+
changed=True, group=group, msg=f'successfully created security group {group}'
138+
)
139+
except Exception as e:
140+
self.module.fail_json(
141+
msg=f'Failed to create security group: {e}'
142+
)
143+
144+
def delete_group(self, group_name):
145+
try:
146+
group = getattr(self.proxmox_api.cluster().firewall().groups(), group_name)
147+
group.delete()
148+
self.module.exit_json(
149+
changed=True, group=group_name, msg=f'successfully deleted security group {group_name}'
150+
)
151+
except Exception as e:
152+
self.module.fail_json(
153+
msg=f'Failed to delete security group {group_name}: {e}'
154+
)
155+
123156
def get_fw_rules(self, rules_obj, pos=None):
124157
if pos is not None:
125158
rules_obj = getattr(rules_obj(), str(pos))

0 commit comments

Comments
 (0)