Fix handling of inventory and credential options for tower_job_launch (#54967)

- Fixed issue #25017,#37567
- Add example for prompt on launch
- Add integration test for prompt on launch

Signed-off-by: Hideki Saito <saito@fgrep.org>
This commit is contained in:
Hideki Saito
2019-04-09 22:08:11 +09:00
committed by AlanCoding
parent 3aa7ee8d17
commit df0bd0797c

View File

@@ -58,11 +58,24 @@ extends_documentation_fragment: tower
''' '''
EXAMPLES = ''' EXAMPLES = '''
# Launch a job template
- name: Launch a job - name: Launch a job
tower_job_launch: tower_job_launch:
job_template: "My Job Template" job_template: "My Job Template"
register: job register: job
- name: Wait for job max 120s
tower_job_wait:
job_id: job.id
timeout: 120
# Launch job template with inventory and credential for prompt on launch
- name: Launch a job with inventory and credential
tower_job_launch:
job_template: "My Job Template"
inventory: "My Inventory"
credential: "My Credential"
register: job
- name: Wait for job max 120s - name: Wait for job max 120s
tower_job_wait: tower_job_wait:
job_id: job.id job_id: job.id
@@ -96,10 +109,10 @@ except ImportError:
def main(): def main():
argument_spec = dict( argument_spec = dict(
job_template=dict(required=True), job_template=dict(required=True, type='str'),
job_type=dict(choices=['run', 'check', 'scan']), job_type=dict(choices=['run', 'check', 'scan']),
inventory=dict(), inventory=dict(type='str', default=None),
credential=dict(), credential=dict(type='str', default=None),
limit=dict(), limit=dict(),
tags=dict(type='list'), tags=dict(type='list'),
extra_vars=dict(type='list'), extra_vars=dict(type='list'),
@@ -126,8 +139,9 @@ def main():
for field in lookup_fields: for field in lookup_fields:
try: try:
name = params.pop(field) name = params.pop(field)
result = tower_cli.get_resource(field).get(name=name) if name:
params[field] = result['id'] result = tower_cli.get_resource(field).get(name=name)
params[field] = result['id']
except exc.NotFound as excinfo: except exc.NotFound as excinfo:
module.fail_json(msg='Unable to launch job, {0}/{1} was not found: {2}'.format(field, name, excinfo), changed=False) module.fail_json(msg='Unable to launch job, {0}/{1} was not found: {2}'.format(field, name, excinfo), changed=False)