in pygenie/client.py [0:0]
def get_clusters(self, filters=None, req_size=1000):
"""
Get all of the clusters.
Note:
This function takes advantage of Genie's paging process. It will
make all of the additional calls required until it retrieves all
of the commands in the Genie cluster.
Args:
filters (optional[dict]): a dictionary of filters to use. Valid key parameters
are: name, status, tag
req_size (int): the number of items to return per request.
Yields:
dict: a cluster configuration
Examples:
>>> [i for i in get_clusters()]
>>> [{...}, {...}, {...}]
>>> [i for i in get_clusters(filters={'status':'UP'})]
>>> [{...}, {...}, {...}]
"""
params = filters or {}
_verify_filters(params, ['name', 'size', 'status', 'tag', 'page'])
# Iterate through any responses until we get to the end
params['page'] = 0
params['size'] = req_size
while True:
resp = self.call(self.path_cluster, method='GET', params=params)
if resp:
for cluster in resp['response'].get('clusterList', []):
yield DotDict(cluster)
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 clusters from genie [%s/%s]',
params['page'], resp['page']['totalPages'])