Add a jsonarg type to arg spec (#15701)
This makes sure that if we get a list or dict that it is turned into a jsonified string.
This commit is contained in:
parent
52a714143f
commit
3f104dcee9
1 changed files with 11 additions and 0 deletions
|
@ -609,6 +609,7 @@ class AnsibleModule(object):
|
|||
'float': self._check_type_float,
|
||||
'path': self._check_type_path,
|
||||
'raw': self._check_type_raw,
|
||||
'jsonarg': self._check_type_jsonarg,
|
||||
}
|
||||
if not bypass_checks:
|
||||
self._check_required_arguments()
|
||||
|
@ -1395,6 +1396,16 @@ class AnsibleModule(object):
|
|||
value = self._check_type_str(value)
|
||||
return os.path.expanduser(os.path.expandvars(value))
|
||||
|
||||
def _check_type_jsonarg(self, value):
|
||||
# Return a jsonified string. Sometimes the controller turns a json
|
||||
# string into a dict/list so transform it back into json here
|
||||
if isinstance(value, (unicode, bytes)):
|
||||
return value
|
||||
else:
|
||||
if isinstance(value (list, tuple, dict)):
|
||||
return json.dumps(value)
|
||||
raise TypeError('%s cannot be converted to a json string' % type(value))
|
||||
|
||||
def _check_type_raw(self, value):
|
||||
return value
|
||||
|
||||
|
|
Loading…
Reference in a new issue