summaryrefslogtreecommitdiff
path: root/lib/ansible/modules/web_infrastructure/ansible_tower/tower_workflow_launch.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ansible/modules/web_infrastructure/ansible_tower/tower_workflow_launch.py')
-rw-r--r--lib/ansible/modules/web_infrastructure/ansible_tower/tower_workflow_launch.py164
1 files changed, 0 insertions, 164 deletions
diff --git a/lib/ansible/modules/web_infrastructure/ansible_tower/tower_workflow_launch.py b/lib/ansible/modules/web_infrastructure/ansible_tower/tower_workflow_launch.py
deleted file mode 100644
index 6f2c577d29..0000000000
--- a/lib/ansible/modules/web_infrastructure/ansible_tower/tower_workflow_launch.py
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/python
-# coding: utf-8 -*-
-
-# 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_workflow_launch
-author: "John Westcott IV (@john-westcott-iv)"
-version_added: "2.8"
-short_description: Run a workflow in Ansible Tower
-description:
- - Launch an Ansible Tower workflows. See
- U(https://www.ansible.com/tower) for an overview.
-options:
- workflow_template:
- description:
- - The name of the workflow template to run.
- required: True
- extra_vars:
- description:
- - Any extra vars required to launch the job.
- required: False
- wait:
- description:
- - Wait for the workflow to complete.
- required: False
- default: True
- type: bool
- timeout:
- description:
- - If waiting for the workflow to complete this will abort after this
- amount of seconds
-
-requirements:
- - "python >= 2.6"
-extends_documentation_fragment: tower
-'''
-
-RETURN = '''
-tower_version:
- description: The version of Tower we connected to
- returned: If connection to Tower works
- type: str
- sample: '3.4.0'
-job_info:
- description: dictionary containing information about the workflow executed
- returned: If workflow launched
- type: dict
-'''
-
-
-EXAMPLES = '''
-- name: Launch a workflow
- tower_workflow_launch:
- name: "Test Workflow"
- delegate_to: localhost
- run_once: true
- register: workflow_results
-
-- name: Launch a Workflow with parameters without waiting
- tower_workflow_launch:
- workflow_template: "Test workflow"
- extra_vars: "---\nmy: var"
- wait: False
- delegate_to: localhost
- run_once: true
- register: workflow_task_info
-'''
-
-from ansible.module_utils.ansible_tower import TowerModule, tower_auth_config
-
-try:
- import tower_cli
- from tower_cli.api import client
- from tower_cli.conf import settings
- from tower_cli.exceptions import ServerError, ConnectionError, BadRequest, TowerCLIError
-except ImportError:
- pass
-
-
-def main():
- argument_spec = dict(
- workflow_template=dict(required=True),
- extra_vars=dict(required=False),
- wait=dict(required=False, default=True, type='bool'),
- timeout=dict(required=False, default=None, type='int'),
- )
-
- module = TowerModule(
- argument_spec=argument_spec,
- supports_check_mode=True
- )
-
- workflow_template = module.params.get('workflow_template')
- extra_vars = module.params.get('extra_vars')
- wait = module.params.get('wait')
- timeout = module.params.get('timeout')
-
- # If we are going to use this result to return we can consider ourselfs changed
- result = dict(
- changed=False,
- msg='initial message'
- )
-
- tower_auth = tower_auth_config(module)
- with settings.runtime_values(**tower_auth):
- # First we will test the connection. This will be a test for both check and run mode
- # Note, we are not using the tower_check_mode method here because we want to do more than just a ping test
- # If we are in check mode we also want to validate that we can find the workflow
- try:
- ping_result = client.get('/ping').json()
- # Stuff the version into the results as an FYI
- result['tower_version'] = ping_result['version']
- except(ServerError, ConnectionError, BadRequest) as excinfo:
- result['msg'] = "Failed to reach Tower: {0}".format(excinfo)
- module.fail_json(**result)
-
- # Now that we know we can connect, lets verify that we can resolve the workflow_template
- try:
- workflow = tower_cli.get_resource("workflow").get(**{'name': workflow_template})
- except TowerCLIError as e:
- result['msg'] = "Failed to find workflow: {0}".format(e)
- module.fail_json(**result)
-
- # Since we were able to find the workflow, if we are in check mode we can return now
- if module.check_mode:
- result['msg'] = "Check mode passed"
- module.exit_json(**result)
-
- # We are no ready to run the workflow
- try:
- result['job_info'] = tower_cli.get_resource('workflow_job').launch(
- workflow_job_template=workflow['id'],
- monitor=False,
- wait=wait,
- timeout=timeout,
- extra_vars=extra_vars
- )
- if wait:
- # If we were waiting for a result we will fail if the workflow failed
- if result['job_info']['failed']:
- result['msg'] = "Workflow execution failed"
- module.fail_json(**result)
- else:
- module.exit_json(**result)
-
- # We were not waiting and there should be no way we can make it here without the workflow fired off so we can return a success
- module.exit_json(**result)
-
- except TowerCLIError as e:
- result['msg'] = "Failed to execute workflow: {0}".format(e)
- module.fail_json(**result)
-
-
-if __name__ == '__main__':
- main()