26
26
def get_proxmox_args ():
27
27
return dict (
28
28
state = dict (type = "str" , choices = ["present" , "absent" , "update" ], required = False ),
29
- force = dict (type = "bool" , default = False , required = False ),
30
29
level = dict (type = "str" , choices = ["cluster" , "node" , "vm" , "vnet" , "group" ], default = "cluster" , required = False ),
31
30
node = dict (type = "str" , required = False ),
32
31
vmid = dict (type = "int" , required = False ),
@@ -69,6 +68,11 @@ def get_ansible_module():
69
68
return AnsibleModule (
70
69
argument_spec = module_args ,
71
70
required_if = [
71
+ ('group_conf' , True , ['group' ]),
72
+ ('level' , 'vm' , ['vmid' ]),
73
+ ('level' , 'node' , ['node' ]),
74
+ ('level' , 'vnet' , ['vnet' ]),
75
+ ('level' , 'group' , ['group' ]),
72
76
]
73
77
)
74
78
@@ -78,11 +82,26 @@ def __init__(self, module):
78
82
super (ProxmoxFirewallAnsible , self ).__init__ (module )
79
83
self .params = module .params
80
84
85
+ def validate_params (self ):
86
+ if self .params .get ('state' ) in ['present' , 'update' ]:
87
+ return self .params .get ('group_conf' ) or self .params .get ('rules' )
88
+ elif self .params .get ('state' ) == 'absent' :
89
+ return self .params .get ('group_conf' ) or self .params .get ('pos' )
90
+ else :
91
+ return True
92
+
93
+
81
94
def run (self ):
95
+ if not self .validate_params ():
96
+ self .module .fail_json (
97
+ msg = f'parameter validation failed. '
98
+ f'If state is present/update we need either group_conf to be True or rules to be present. '
99
+ f'If state is absent we need group_conf to be True or pos to be present. '
100
+ )
101
+
82
102
state = self .params .get ("state" )
83
- force = self .params .get ("force" )
84
103
level = self .params .get ("level" )
85
- rules = self .params .get ("rules" )
104
+ rules = self .params .get ("rules" )
86
105
87
106
if level == "vm" :
88
107
vm = self .get_vm (vmid = self .params .get ('vmid' ))
0 commit comments