def _handle_discovery()

in blueprints/cloud-operations/network-quota-monitoring/src/plugins/discover-compute-routerstatus.py [0:0]


def _handle_discovery(resources, response):
  'Processes asset batch response and parses router status data.'
  LOGGER.info('discovery handle request')
  content_type = response.headers['content-type']
  routers = [r for r in resources['routers'].values()]
  # process batch response
  for i, part in enumerate(poor_man_mp_response(content_type,
                                                response.content)):
    router = routers[i]
    result = part.get('result')
    if not result:
      LOGGER.info(f'skipping router {router["self_link"]}, no result')
      continue
    bgp_peer_status = result.get('bgpPeerStatus')
    if not bgp_peer_status:
      LOGGER.info(f'skipping router {router["self_link"]}, no bgp peer status')
      continue
    network = result.get('network')
    if not network:
      LOGGER.info(f'skipping router {router["self_link"]}, no bgp peer status')
      continue
    if not network.endswith(router['network']):
      LOGGER.warn(
          f'router network mismatch: got {network} expected {router["network"]}'
      )
      continue
    num_learned_routes = sum(
        int(p.get('numLearnedRoutes', 0)) for p in bgp_peer_status)
    if router['network'] not in resources[NAME]:
      resources[NAME][router['network']] = {}
    yield Resource(NAME, router['network'], num_learned_routes,
                   router['self_link'])
  yield