mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Fix to module.run [WIP]
DO NOT MERGE For @terminalmage to review
This commit is contained in:
parent
88414d5f73
commit
0cac15e502
1 changed files with 18 additions and 9 deletions
|
@ -314,22 +314,31 @@ def _call_function(name, returner=None, **kwargs):
|
|||
:return:
|
||||
'''
|
||||
argspec = salt.utils.args.get_function_argspec(__salt__[name])
|
||||
|
||||
# func_kw is initialized to a dictinary of keyword arguments the function to be run accepts
|
||||
func_kw = dict(zip(argspec.args[-len(argspec.defaults or []):], # pylint: disable=incompatible-py3-code
|
||||
argspec.defaults or []))
|
||||
|
||||
# func_args is initialized to a list of keyword arguments the function to be run accepts
|
||||
func_args = argspec.args[:len(argspec.args or [] ) - len(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)
|
||||
# We are just receiving a list of args to the function to be run, so just append
|
||||
# those to the arg list that we will pass to the func.
|
||||
arg_type.append(funcset)
|
||||
else:
|
||||
func_kw.update(funcset)
|
||||
for kwarg_key in funcset.keys():
|
||||
# We are going to pass in a keyword argument. The trick here is to make certain
|
||||
# that if we find that in the *args* list that we pass it there and not as a kwarg
|
||||
if kwarg_key in func_args:
|
||||
arg_type.append(funcset[kwarg_key])
|
||||
continue
|
||||
else:
|
||||
# Otherwise, we're good and just go ahead and pass the keyword/value pair into
|
||||
# the kwargs list to be run.
|
||||
func_kw.update(funcset)
|
||||
arg_type.reverse()
|
||||
|
||||
_exp_prm = len(argspec.args or []) - len(argspec.defaults or [])
|
||||
_passed_prm = len(arg_type)
|
||||
missing = []
|
||||
|
|
Loading…
Add table
Reference in a new issue