@@ -58,6 +58,7 @@ def get_ansible_module():
58
58
required_if = [
59
59
('state' , 'present' , ['subnet' , 'type' , 'vnet' ]),
60
60
('state' , 'update' , ['zone' , 'vnet' , 'subnet' ]),
61
+ ('state' , 'absent' , ['zone' , 'vnet' , 'subnet' ]),
61
62
]
62
63
)
63
64
@@ -86,6 +87,8 @@ def run(self):
86
87
self .subnet_present (** subnet_params )
87
88
elif state == 'update' :
88
89
self .subnet_update (** subnet_params )
90
+ elif state == 'absent' :
91
+ self .subnet_absent (** subnet_params )
89
92
90
93
def get_dhcp_range (self ):
91
94
if self .params .get ('dhcp_range' ) is None :
@@ -137,6 +140,31 @@ def subnet_update(self, **subnet_params):
137
140
msg = f'Failed to update subnet. Rolling back all changes. : { e } '
138
141
)
139
142
143
+ def subnet_absent (self , ** subnet_params ):
144
+ vnet_id = subnet_params ['vnet' ]
145
+ lock = subnet_params ['lock-token' ]
146
+ subnet_id = f"{ self .params ['zone' ]} -{ subnet_params ['subnet' ].replace ('/' , '-' )} "
147
+
148
+ params = {
149
+ 'subnet' : subnet_id ,
150
+ 'vnet' : vnet_id ,
151
+ 'lock-token' : lock
152
+ }
153
+
154
+ try :
155
+ vnet = getattr (self .proxmox_api .cluster ().sdn ().vnets (), vnet_id )
156
+ subnet = getattr (vnet ().subnets (), subnet_id )
157
+ subnet .delete (** params )
158
+ self .apply_sdn_changes_and_release_lock (lock = lock )
159
+ self .module .exit_json (
160
+ changed = True , subnet = subnet_id , msg = f'Deleted subnet { subnet_id } '
161
+ )
162
+ except Exception as e :
163
+ self .rollback_sdn_changes_and_release_lock (lock = lock )
164
+ self .module .fail_json (
165
+ msg = f'Failed to delete subnet. Rolling back all changes. : { e } '
166
+ )
167
+
140
168
141
169
def main ():
142
170
module = get_ansible_module ()
0 commit comments