in blueprints/cloud-operations/network-quota-monitoring/src/plugins/discover-compute-quota.py [0:0]
def _handle_discovery(resources, response):
'Processes asset batch response and overlays custom quota.'
LOGGER.info('discovery handle request')
content_type = response.headers['content-type']
per_project_quota = resources['config:custom_quota'].get('projects', {})
# process batch response
for part in poor_man_mp_response(content_type, response.content):
kind = part.get('kind')
quota = {
q['metric']: int(q['limit'])
for q in sorted(part.get('quotas', []), key=lambda v: v['metric'])
}
self_link = part.get('selfLink')
if not self_link:
logging.warn('invalid quota response')
continue
self_link = self_link.split('/')
if kind == 'compute#project':
project_id = self_link[-1]
region = 'global'
elif kind == 'compute#region':
project_id = self_link[-3]
region = self_link[-1]
# custom quota overrides
for k, v in per_project_quota.get(project_id, {}).get(region, {}).items():
quota[k] = int(v)
if project_id not in resources[NAME]:
resources[NAME][project_id] = {}
yield Resource(NAME, project_id, quota, region)