29
29
- present
30
30
- absent
31
31
- update
32
- force :
32
+ update :
33
33
description:
34
34
- If state is present and zone exists it'll update.
35
- - If state is update and zone doesn't exists it'll create new zone
36
35
type: bool
37
- default: false
36
+ default: true
38
37
type:
39
38
description:
40
39
- Specify the type of zone.
184
183
state: present
185
184
bridge: vmbr0
186
185
187
- - name: update a zones
188
- community.proxmox.proxmox_zone:
189
- api_user: "root@pam"
190
- api_password: "{{ vault.proxmox.root_password }}"
191
- api_host: "{{ pc.proxmox.api_host }}"
192
- validate_certs: no
193
- type: vlan
194
- zone: ansible
195
- state: update
196
- mtu: 1200
197
-
198
186
- name: Delete a zones
199
187
community.proxmox.proxmox_zone:
200
188
api_user: "root@pam"
226
214
227
215
def get_proxmox_args ():
228
216
return dict (
229
- state = dict (type = "str" , choices = ["present" , "absent" , "update" ], required = False ),
230
- force = dict (type = "bool" , default = False , required = False ),
217
+ state = dict (type = "str" , choices = ["present" , "absent" ], required = True ),
218
+ update = dict (type = "bool" , default = True ),
231
219
type = dict (type = "str" ,
232
220
choices = ["evpn" , "faucet" , "qinq" , "simple" , "vlan" , "vxlan" ],
233
221
required = False ),
@@ -281,7 +269,7 @@ def __init__(self, module):
281
269
282
270
def validate_params (self ):
283
271
zone_type = self .params .get ('type' )
284
- if self .params .get ('state' ) in [ 'present' , 'update' ] :
272
+ if self .params .get ('state' ) == 'present' :
285
273
if zone_type == 'vlan' :
286
274
return self .params .get ('bridge' )
287
275
elif zone_type == 'qinq' :
@@ -296,8 +284,8 @@ def validate_params(self):
296
284
return True
297
285
298
286
def run (self ):
299
- state = self .params .get (" state" )
300
- force = self .params .get ("force" )
287
+ state = self .params .get (' state' )
288
+ update = self .params .get ('update' )
301
289
zone_type = self .params .get ('type' )
302
290
303
291
if not self .validate_params ():
@@ -345,40 +333,43 @@ def run(self):
345
333
zone_params ['lock-token' ] = self .get_global_sdn_lock ()
346
334
347
335
if state == "present" :
348
- self .zone_present (force , ** zone_params )
349
-
350
- elif state == "update" :
351
- self .zone_update (** zone_params )
336
+ self .zone_present (update , ** zone_params )
352
337
353
338
elif state == "absent" :
354
339
self .zone_absent (
355
340
zone_name = zone_params .get ('zone' ),
356
341
lock = zone_params .get ('lock-token' )
357
342
)
358
- else :
359
- zones = self .get_zones (
360
- zone_type = self .params .get ('type' )
361
- )
362
- self .module .exit_json (
363
- changed = False , zones = zones , msg = "Successfully retrieved zone info."
364
- )
365
343
366
- def zone_present (self , force , ** kwargs ):
344
+ def zone_present (self , update , ** kwargs ):
367
345
available_zones = {x .get ('zone' ): {'type' : x .get ('type' ), 'digest' : x .get ('digest' )} for x in self .get_zones ()}
368
346
zone_name = kwargs .get ("zone" )
369
347
zone_type = kwargs .get ("type" )
370
348
lock = kwargs .get ('lock-token' )
371
349
372
350
# Check if zone already exists
373
- if zone_name in available_zones .keys () and force :
351
+ if zone_name in available_zones .keys () and update :
374
352
if zone_type != available_zones [zone_name ]['type' ]:
375
353
self .release_lock (lock )
376
354
self .module .fail_json (
377
355
msg = f'zone { zone_name } exists with different type and we cannot change type post fact.'
378
356
)
379
357
else :
380
- self .zone_update (** kwargs )
381
- elif zone_name in available_zones .keys () and not force :
358
+ try :
359
+ kwargs ['digest' ] = available_zones [zone_name ]['digest' ]
360
+ zone = getattr (self .proxmox_api .cluster ().sdn ().zones (), zone_name )
361
+ zone .put (** kwargs )
362
+ self .apply_sdn_changes_and_release_lock (lock )
363
+ self .module .exit_json (
364
+ changed = True , zone = zone_name , msg = f'Updated zone - { zone_name } '
365
+ )
366
+ except Exception as e :
367
+ self .rollback_sdn_changes_and_release_lock (lock )
368
+ self .module .fail_json (
369
+ msg = f'Failed to update zone { zone_name } - { e } '
370
+ )
371
+
372
+ elif zone_name in available_zones .keys () and not update :
382
373
self .release_lock (lock )
383
374
self .module .exit_json (
384
375
changed = False , zone = zone_name , msg = f'Zone { zone_name } already exists and force is false!'
@@ -396,38 +387,6 @@ def zone_present(self, force, **kwargs):
396
387
msg = f'Failed to create zone { zone_name } - { e } '
397
388
)
398
389
399
- def zone_update (self , ** kwargs ):
400
- available_zones = {x .get ('zone' ): {'type' : x .get ('type' ), 'digest' : x .get ('digest' )} for x in self .get_zones ()}
401
- zone_type = kwargs .get ("type" )
402
- zone_name = kwargs .get ("zone" )
403
- lock = kwargs .get ('lock-token' )
404
-
405
- try :
406
- # If zone is not present create it
407
- if zone_name not in available_zones .keys ():
408
- self .zone_present (force = False , ** kwargs )
409
- elif zone_type == available_zones [zone_name ]['type' ]:
410
- del kwargs ['type' ]
411
- del kwargs ['zone' ]
412
- kwargs ['digest' ] = available_zones [zone_name ]['digest' ]
413
-
414
- zone = getattr (self .proxmox_api .cluster ().sdn ().zones (), zone_name )
415
- zone .put (** kwargs )
416
- self .apply_sdn_changes_and_release_lock (lock )
417
- self .module .exit_json (
418
- changed = True , zone = zone_name , msg = f'Updated zone { zone_name } '
419
- )
420
- else :
421
- self .release_lock (lock )
422
- self .module .fail_json (
423
- msg = f'zone { zone_name } already exists with different type'
424
- )
425
- except Exception as e :
426
- self .rollback_sdn_changes_and_release_lock (lock )
427
- self .module .fail_json (
428
- msg = f'Failed to update zone { e } '
429
- )
430
-
431
390
def zone_absent (self , zone_name , lock ):
432
391
available_zones = [x .get ('zone' ) for x in self .get_zones ()]
433
392
params = {'lock-token' : lock }
0 commit comments