2017-03-02 17:33:39 +03:00
#!/usr/bin/python
2017-05-11 19:26:36 +03:00
# coding: utf-8 -*-
2017-03-02 17:33:39 +03:00
# (c) 2017, Wayne Witzel III <wayne@riotousliving.com>
Remove wildcard imports
Made the following changes:
* Removed wildcard imports
* Replaced long form of GPL header with short form
* Removed get_exception usage
* Added from __future__ boilerplate
* Adjust division operator to // where necessary
For the following files:
* web_infrastructure modules
* system modules
* linode, lxc, lxd, atomic, cloudscale, dimensiondata, ovh, packet,
profitbricks, pubnub, smartos, softlayer, univention modules
* compat dirs (disabled as its used intentionally)
2017-07-28 08:55:24 +03:00
# 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
2017-03-02 17:33:39 +03:00
2017-08-16 06:16:38 +03:00
ANSIBLE_METADATA = { ' metadata_version ' : ' 1.1 ' ,
2017-03-14 19:07:22 +03:00
' status ' : [ ' preview ' ] ,
' supported_by ' : ' community ' }
2017-03-02 17:33:39 +03:00
DOCUMENTATION = '''
- - -
module : tower_job_list
2017-03-09 19:20:25 +03:00
author : " Wayne Witzel III (@wwitzel3) "
2017-03-02 17:33:39 +03:00
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 ' ]
2019-09-30 23:01:44 +03:00
type : str
2017-03-02 17:33:39 +03:00
page :
description :
- Page number of the results to fetch .
2019-09-30 23:01:44 +03:00
type : int
2017-03-02 17:33:39 +03:00
all_pages :
description :
- Fetch all the pages and return a single result .
2018-03-16 00:15:24 +03:00
type : bool
default : ' no '
2017-03-02 17:33:39 +03:00
query :
description :
2018-03-15 06:58:50 +03:00
- Query used to further filter the list of jobs . C ( { " foo " : " bar " } ) will be passed at C ( ? foo = bar )
2019-09-30 23:01:44 +03:00
type : dict
2019-09-18 15:43:36 +03:00
extends_documentation_fragment : awx . awx . auth
2017-03-02 17:33:39 +03:00
'''
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 "
2019-01-09 17:21:26 +03:00
register : testing_jobs
2017-03-02 17:33:39 +03:00
'''
RETURN = '''
count :
description : Total count of objects return
returned : success
type : int
2017-04-26 17:56:13 +03:00
sample : 51
2017-03-02 17:33:39 +03:00
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 " } , . . . ]
'''
2019-08-31 00:11:01 +03:00
from . . module_utils . ansible_tower import TowerModule , tower_auth_config , tower_check_mode
2017-10-02 23:21:24 +03:00
2017-03-02 17:33:39 +03:00
try :
import tower_cli
2019-01-09 17:31:21 +03:00
import tower_cli . exceptions as exc
2017-03-02 17:33:39 +03:00
from tower_cli . conf import settings
except ImportError :
2017-10-02 23:21:24 +03:00
pass
2017-03-02 17:33:39 +03:00
def main ( ) :
2018-08-02 18:17:39 +03:00
argument_spec = dict (
2017-05-11 19:26:36 +03:00
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 ' ) ,
2018-08-02 18:17:39 +03:00
)
2017-03-02 17:33:39 +03:00
2018-08-02 18:17:39 +03:00
module = TowerModule (
2017-05-11 19:26:36 +03:00
argument_spec = argument_spec ,
2017-03-02 17:33:39 +03:00
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 ' )
2017-05-11 19:26:36 +03:00
params = { ' status ' : status , ' page ' : page , ' all_pages ' : all_pages }
2017-03-02 17:33:39 +03:00
if query :
params [ ' query ' ] = query . items ( )
json_output = job . list ( * * params )
2019-03-06 14:18:43 +03:00
except ( exc . ConnectionError , exc . BadRequest , exc . AuthError ) as excinfo :
2017-03-02 17:33:39 +03:00
module . fail_json ( msg = ' Failed to list jobs: {0} ' . format ( excinfo ) , changed = False )
module . exit_json ( * * json_output )
if __name__ == ' __main__ ' :
main ( )