mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Bugfix: args gets ignored alongside named parameters
This commit is contained in:
parent
74689e3462
commit
ea8351362c
1 changed files with 23 additions and 10 deletions
|
@ -315,22 +315,35 @@ def _call_function(name, returner=None, **kwargs):
|
|||
'''
|
||||
argspec = salt.utils.args.get_function_argspec(__salt__[name])
|
||||
func_kw = dict(zip(argspec.args[-len(argspec.defaults or []):], # pylint: disable=incompatible-py3-code
|
||||
argspec.defaults or []))
|
||||
func_args = []
|
||||
for funcset in kwargs.get('func_args') or {}:
|
||||
if isinstance(funcset, dict):
|
||||
func_kw.update(funcset)
|
||||
argspec.defaults or []))
|
||||
arg_type, na_type, kw_type = [], {}, False
|
||||
for funcset in reversed(kwargs.get('func_args') or []):
|
||||
if not isinstance(funcset, dict):
|
||||
kw_type = True
|
||||
if kw_type:
|
||||
if isinstance(funcset, dict):
|
||||
arg_type += funcset.values()
|
||||
na_type.update(funcset)
|
||||
else:
|
||||
arg_type.append(funcset)
|
||||
else:
|
||||
func_args.append(funcset)
|
||||
func_kw.update(funcset)
|
||||
arg_type.reverse()
|
||||
|
||||
_exp_prm = len(argspec.args or []) - len(argspec.defaults or [])
|
||||
_passed_prm = len(arg_type)
|
||||
missing = []
|
||||
for arg in argspec.args:
|
||||
if arg not in func_kw:
|
||||
missing.append(arg)
|
||||
if na_type and _exp_prm > _passed_prm:
|
||||
for arg in argspec.args:
|
||||
if arg not in func_kw:
|
||||
missing.append(arg)
|
||||
if missing:
|
||||
raise SaltInvocationError('Missing arguments: {0}'.format(', '.join(missing)))
|
||||
elif _exp_prm > _passed_prm:
|
||||
raise SaltInvocationError('Function expects {0} parameters, got only {1}'.format(
|
||||
_exp_prm, _passed_prm))
|
||||
|
||||
mret = __salt__[name](*func_args, **func_kw)
|
||||
mret = __salt__[name](*arg_type, **func_kw)
|
||||
if returner is not None:
|
||||
returners = salt.loader.returners(__opts__, __salt__)
|
||||
if returner in returners:
|
||||
|
|
Loading…
Add table
Reference in a new issue