@@ -31,6 +31,7 @@ def get_proxmox_args():
31
31
node = dict (type = "str" , required = False ),
32
32
vmid = dict (type = "int" , required = False ),
33
33
vnet = dict (type = "str" , required = False ),
34
+ pos = dict (type = "int" , required = False ),
34
35
rules = dict (
35
36
type = "list" ,
36
37
elements = "dict" ,
@@ -111,6 +112,8 @@ def run(self):
111
112
elif state == "update" :
112
113
if rules is not None :
113
114
self .update_fw_rules (rules_obj = rules_obj , rules = rules )
115
+ elif state == "absent" :
116
+ self .delete_fw_rule (rules_obj = rules_obj , pos = self .params .get ('pos' ))
114
117
else :
115
118
rules = self .get_fw_rules (rules_obj )
116
119
self .module .exit_json (
@@ -127,6 +130,20 @@ def get_fw_rules(self, rules_obj, pos=None):
127
130
msg = f'Failed to retrieve firewall rules: { e } '
128
131
)
129
132
133
+ def delete_fw_rule (self , rules_obj , pos ):
134
+ try :
135
+ rule_obj = getattr (rules_obj (), str (pos ))
136
+ digest = rule_obj .get ().get ('digest' )
137
+ rule_obj .delete (pos = pos , digest = digest )
138
+
139
+ self .module .exit_json (
140
+ changed = True , msg = f'successfully deleted firewall rules'
141
+ )
142
+ except Exception as e :
143
+ self .module .fail_json (
144
+ msg = f'Failed to delete firewall rule at pos { pos } : { e } '
145
+ )
146
+
130
147
def update_fw_rules (self , rules_obj , rules ):
131
148
for rule in rules :
132
149
rule ['icmp-type' ] = rule .get ('icmp_type' )
0 commit comments