Skip to content

Commit 70d3d83

Browse files
committed
proxmox_zone: validate params
1 parent 3f82ab6 commit 70d3d83

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

plugins/modules/proxmox_zone.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,8 @@ def get_ansible_module():
315315
argument_spec=module_args,
316316
required_if=[
317317
('state', 'present', ['type', 'zone']),
318-
('state', 'update', ['type', 'zone'])
318+
('state', 'update', ['type', 'zone']),
319+
('state', 'absent', ['zone'])
319320
]
320321
)
321322

@@ -324,9 +325,35 @@ def __init__(self, module):
324325
super(ProxmoxZoneAnsible, self).__init__(module)
325326
self.params = module.params
326327

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+
327342
def run(self):
328343
state = self.params.get("state")
329344
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+
)
330357

331358
zone_params = {
332359
"type": self.params.get("type"),

0 commit comments

Comments
 (0)