Skip to content

Commit 32fc55f

Browse files
committed
proxmox_firewall: Add method to update fw rules
1 parent 7e97435 commit 32fc55f

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

plugins/modules/proxmox_firewall.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,9 @@ def run(self):
108108
if state == "present":
109109
if rules is not None:
110110
self.create_fw_rules(rules_obj=rules_obj, rules=rules)
111+
elif state == "update":
112+
if rules is not None:
113+
self.update_fw_rules(rules_obj=rules_obj, rules=rules)
111114
else:
112115
rules = self.get_fw_rules(rules_obj)
113116
self.module.exit_json(
@@ -124,6 +127,25 @@ def get_fw_rules(self, rules_obj, pos=None):
124127
msg=f'Failed to retrieve firewall rules: {e}'
125128
)
126129

130+
def update_fw_rules(self, rules_obj, rules):
131+
for rule in rules:
132+
rule['icmp-type'] = rule.get('icmp_type')
133+
rule['enable'] = ansible_to_proxmox_bool(rule.get('enable'))
134+
del rule['icmp_type']
135+
try:
136+
rule_obj = getattr(rules_obj(), str(rule['pos']))
137+
rule['digest'] = rule_obj.get().get('digest') # Avoids concurrent changes
138+
rule_obj.put(**rule)
139+
140+
except Exception as e:
141+
self.module.fail_json(
142+
msg=f'Failed to update firewall rule at pos {rule["pos"]}: {e}'
143+
)
144+
else:
145+
self.module.exit_json(
146+
changed=True, msg=f'successfully created firewall rules'
147+
)
148+
127149
def create_fw_rules(self, rules_obj, rules):
128150
for rule in rules:
129151
rule['icmp-type'] = rule.get('icmp_type')

0 commit comments

Comments
 (0)