def _handle_discovery()

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)