in pygenie/client.py [0:0]
def get_jobs(self, filters=None, req_size=1000):
"""
Get jobs. This command makes pages through results from Genie and will
make multiple API calls until all of the results have been returned.
Args:
filters (dict): filter the jobs by these value(s). Valid parameters
are id, clusterName, user, status, and tag.
req_size (int): the number of items to return per request.
Yields:
dict: a job
Examples:
>>> [i for i in get_jobs()]
>>> [{'id':'testjob'}, {'id':'testjob2'}]
>>> [i for i in get_jobs(filters={'user': 'testuser'})]
>>> [{'id': 'testcluster'}]
"""
params = filters or {}
# Iterate through any responses until we get to the end
params['page'] = 0
params['size'] = req_size
while True:
resp = self.call(self.path_job, method='GET', params=params)
if resp:
for job in resp['response'].get('jobSearchResultList', []):
yield DotDict(job)
else:
yield None
# Break if we're at the end
if (resp['page']['totalPages']) <= (resp['page']['number'] + 1):
break
# On to the next iteration
params['page'] += 1
logger.info('Fetching additional jobs from genie [%s/%s]',
params['page'], resp['page']['totalPages'])