@@ -315,7 +315,8 @@ def get_ansible_module():
315
315
argument_spec = module_args ,
316
316
required_if = [
317
317
('state' , 'present' , ['type' , 'zone' ]),
318
- ('state' , 'update' , ['type' , 'zone' ])
318
+ ('state' , 'update' , ['type' , 'zone' ]),
319
+ ('state' , 'absent' , ['zone' ])
319
320
]
320
321
)
321
322
@@ -324,9 +325,35 @@ def __init__(self, module):
324
325
super (ProxmoxZoneAnsible , self ).__init__ (module )
325
326
self .params = module .params
326
327
328
+ def validate_params (self ):
329
+ type = self .params .get ('type' )
330
+ if self .params .get ('state' ) in ['present' , 'update' ]:
331
+ if type == 'vlan' :
332
+ return self .params .get ('bridge' )
333
+ elif type == 'qinq' :
334
+ return self .params .get ('tag' ) and self .params .get ('vlan_protocol' )
335
+ elif type == 'vxlan' :
336
+ return self .params .get ('fabric' )
337
+ elif type == 'evpn' :
338
+ return self .params .get ('controller' ) and self .params .get ('vrf_vxlan' )
339
+ else :
340
+ return True
341
+
327
342
def run (self ):
328
343
state = self .params .get ("state" )
329
344
force = self .params .get ("force" )
345
+ type = self .params ['type' ]
346
+
347
+ if not self .validate_params ():
348
+ required_params = {
349
+ 'vlan' : ['bridge' ],
350
+ 'qinq' : ['bridge' , 'tag' , 'vlan_protocol' ],
351
+ 'vxlan' : ['fabric' ],
352
+ 'evpn' : ['controller' , 'vrf_vxlan' ]
353
+ }
354
+ self .module .fail_json (
355
+ msg = f'to create zone of type { type } it needs - { required_params [type ]} '
356
+ )
330
357
331
358
zone_params = {
332
359
"type" : self .params .get ("type" ),
0 commit comments