mirror of
https://github.com/ansible/awx.git
synced 2024-10-31 23:51:09 +03:00
7dd8e35e8c
doc fragment will now be at awx.awx.auth changed from just tower, which source from core remove Makefile things no longer needed
129 lines
3.7 KiB
Python
129 lines
3.7 KiB
Python
#!/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_list
|
|
author: "Wayne Witzel III (@wwitzel3)"
|
|
version_added: "2.3"
|
|
short_description: List Ansible Tower jobs.
|
|
description:
|
|
- List Ansible Tower jobs. See
|
|
U(https://www.ansible.com/tower) for an overview.
|
|
options:
|
|
status:
|
|
description:
|
|
- Only list jobs with this status.
|
|
choices: ['pending', 'waiting', 'running', 'error', 'failed', 'canceled', 'successful']
|
|
page:
|
|
description:
|
|
- Page number of the results to fetch.
|
|
all_pages:
|
|
description:
|
|
- Fetch all the pages and return a single result.
|
|
type: bool
|
|
default: 'no'
|
|
query:
|
|
description:
|
|
- Query used to further filter the list of jobs. C({"foo":"bar"}) will be passed at C(?foo=bar)
|
|
extends_documentation_fragment: awx.awx.auth
|
|
'''
|
|
|
|
|
|
EXAMPLES = '''
|
|
- name: List running jobs for the testing.yml playbook
|
|
tower_job_list:
|
|
status: running
|
|
query: {"playbook": "testing.yml"}
|
|
tower_config_file: "~/tower_cli.cfg"
|
|
register: testing_jobs
|
|
'''
|
|
|
|
RETURN = '''
|
|
count:
|
|
description: Total count of objects return
|
|
returned: success
|
|
type: int
|
|
sample: 51
|
|
next:
|
|
description: next page available for the listing
|
|
returned: success
|
|
type: int
|
|
sample: 3
|
|
previous:
|
|
description: previous page available for the listing
|
|
returned: success
|
|
type: int
|
|
sample: 1
|
|
results:
|
|
description: a list of job objects represented as dictionaries
|
|
returned: success
|
|
type: list
|
|
sample: [{"allow_simultaneous": false, "artifacts": {}, "ask_credential_on_launch": false,
|
|
"ask_inventory_on_launch": false, "ask_job_type_on_launch": false, "failed": false,
|
|
"finished": "2017-02-22T15:09:05.633942Z", "force_handlers": false, "forks": 0, "id": 2,
|
|
"inventory": 1, "job_explanation": "", "job_tags": "", "job_template": 5, "job_type": "run"}, ...]
|
|
'''
|
|
|
|
|
|
from ..module_utils.ansible_tower import TowerModule, tower_auth_config, tower_check_mode
|
|
|
|
try:
|
|
import tower_cli
|
|
import tower_cli.exceptions as exc
|
|
|
|
from tower_cli.conf import settings
|
|
except ImportError:
|
|
pass
|
|
|
|
|
|
def main():
|
|
argument_spec = dict(
|
|
status=dict(choices=['pending', 'waiting', 'running', 'error', 'failed', 'canceled', 'successful']),
|
|
page=dict(type='int'),
|
|
all_pages=dict(type='bool', default=False),
|
|
query=dict(type='dict'),
|
|
)
|
|
|
|
module = TowerModule(
|
|
argument_spec=argument_spec,
|
|
supports_check_mode=True
|
|
)
|
|
|
|
json_output = {}
|
|
|
|
query = module.params.get('query')
|
|
status = module.params.get('status')
|
|
page = module.params.get('page')
|
|
all_pages = module.params.get('all_pages')
|
|
|
|
tower_auth = tower_auth_config(module)
|
|
with settings.runtime_values(**tower_auth):
|
|
tower_check_mode(module)
|
|
try:
|
|
job = tower_cli.get_resource('job')
|
|
params = {'status': status, 'page': page, 'all_pages': all_pages}
|
|
if query:
|
|
params['query'] = query.items()
|
|
json_output = job.list(**params)
|
|
except (exc.ConnectionError, exc.BadRequest, exc.AuthError) as excinfo:
|
|
module.fail_json(msg='Failed to list jobs: {0}'.format(excinfo), changed=False)
|
|
|
|
module.exit_json(**json_output)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|