diff options
Diffstat (limited to 'lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py')
-rw-r--r-- | lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py b/lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py deleted file mode 100644 index d512a07565..0000000000 --- a/lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py +++ /dev/null @@ -1,149 +0,0 @@ -#!/usr/bin/python -# coding: utf-8 -*- - -# (c) 2017, Wayne Witzel III <wayne@riotousliving.com> -# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) - -from __future__ import absolute_import, division, print_function -__metaclass__ = type - - -ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], - 'supported_by': 'community'} - - -DOCUMENTATION = ''' ---- -module: tower_job_wait -version_added: "2.3" -author: "Wayne Witzel III (@wwitzel3)" -short_description: Wait for Ansible Tower job to finish. -description: - - Wait for Ansible Tower job to finish and report success or failure. See - U(https://www.ansible.com/tower) for an overview. -options: - job_id: - description: - - ID of the job to monitor. - required: True - min_interval: - description: - - Minimum interval in seconds, to request an update from Tower. - default: 1 - max_interval: - description: - - Maximum interval in seconds, to request an update from Tower. - default: 30 - timeout: - description: - - Maximum time in seconds to wait for a job to finish. -extends_documentation_fragment: tower -''' - -EXAMPLES = ''' -- name: Launch a job - tower_job_launch: - job_template: "My Job Template" - register: job - -- name: Wait for job max 120s - tower_job_wait: - job_id: "{{ job.id }}" - timeout: 120 -''' - -RETURN = ''' -id: - description: job id that is being waited on - returned: success - type: int - sample: 99 -elapsed: - description: total time in seconds the job took to run - returned: success - type: float - sample: 10.879 -started: - description: timestamp of when the job started running - returned: success - type: str - sample: "2017-03-01T17:03:53.200234Z" -finished: - description: timestamp of when the job finished running - returned: success - type: str - sample: "2017-03-01T17:04:04.078782Z" -status: - description: current status of job - returned: success - type: str - sample: successful -''' - - -from ansible.module_utils.ansible_tower import TowerModule, tower_auth_config, tower_check_mode -from ansible.module_utils.six.moves import cStringIO as StringIO - - -try: - import tower_cli - import tower_cli.exceptions as exc - - from tower_cli.conf import settings -except ImportError: - pass - - -def main(): - argument_spec = dict( - job_id=dict(type='int', required=True), - timeout=dict(type='int'), - min_interval=dict(type='float', default=1), - max_interval=dict(type='float', default=30), - ) - - module = TowerModule( - argument_spec, - supports_check_mode=True - ) - - json_output = {} - fail_json = None - - tower_auth = tower_auth_config(module) - with settings.runtime_values(**tower_auth): - tower_check_mode(module) - job = tower_cli.get_resource('job') - params = module.params.copy() - - # tower-cli gets very noisy when monitoring. - # We pass in our our outfile to suppress the out during our monitor call. - outfile = StringIO() - params['outfile'] = outfile - - job_id = params.get('job_id') - try: - result = job.monitor(job_id, **params) - except exc.Timeout as excinfo: - result = job.status(job_id) - result['id'] = job_id - json_output['msg'] = 'Timeout waiting for job to finish.' - json_output['timeout'] = True - except exc.NotFound as excinfo: - fail_json = dict(msg='Unable to wait, no job_id {0} found: {1}'.format(job_id, excinfo), changed=False) - except (exc.ConnectionError, exc.BadRequest, exc.AuthError) as excinfo: - fail_json = dict(msg='Unable to wait for job: {0}'.format(excinfo), changed=False) - - if fail_json is not None: - module.fail_json(**fail_json) - - json_output['success'] = True - for k in ('id', 'status', 'elapsed', 'started', 'finished'): - json_output[k] = result.get(k) - - module.exit_json(**json_output) - - -if __name__ == '__main__': - main() |