cli: add support for loading JSON/YAML w/ the ansible-like @ syntax

This commit is contained in:
Ryan Petrello 2019-08-29 14:34:36 -04:00
parent 9571801e9f
commit 8e58a4a7de
No known key found for this signature in database
GPG Key ID: F2AA5F2122351777
2 changed files with 15 additions and 11 deletions

View File

@ -44,17 +44,10 @@ the output of) a playbook from that repository:
-f jq --filter '.id')
awx job_templates launch $TEMPLATE_ID --monitor
Importing an SSH Key
--------------------
DOCUMENT ME
Creating a Job Template with Extra Vars
Updating a Job Template with Extra Vars
---------------------------------------
DOCUMENT ME
.. code:: bash
Granting Membership to a Team or Organization
---------------------------------------------
DOCUMENT ME
awx job_templates modify 1 --extra_vars "@vars.yml"
awx job_templates modify 1 --extra_vars "@vars.json"

View File

@ -80,6 +80,8 @@ class ResourceOptionsParser(object):
continue
def json_or_yaml(v):
if v.startswith('@'):
v = open(v[1:]).read()
try:
return json.loads(v)
except Exception:
@ -124,6 +126,15 @@ class ResourceOptionsParser(object):
if param['type'] == 'id' and not kwargs.get('help'):
kwargs['help'] = 'the ID of the associated {}'.format(k)
if param['type'] == 'json' and method != 'list':
help_parts = []
if kwargs.get('help'):
help_parts.append(kwargs['help'])
else:
help_parts.append('a JSON or YAML string.')
help_parts.append('You can optionally specify a file path e.g., @path/to/file.yml')
kwargs['help'] = ' '.join(help_parts)
# SPECIAL CUSTOM LOGIC GOES HERE :'(
# There are certain requirements that aren't captured well by our
# HTTP OPTIONS due to $reasons