def do_timeseries_calc()

in blueprints/cloud-operations/network-quota-monitoring/src/main.py [0:0]


def do_timeseries_calc(resources, descriptors, timeseries, debug_plugin=None):
  '''Calls timeseries plugins and collect resulting descriptors and timeseries.

  Timeseries plugin return a list of MetricDescriptors and Timeseries instances,
  one per each metric.

  Args:
    resources: shared map of configuration and discovered resources.
    descriptors: list where collected descriptors will be stored.
    timeseries: list where collected timeseries will be stored.
    debug_plugin: optional name of a single plugin to call
  '''
  LOGGER.info(f'timeseries calc start (debug plugin: {debug_plugin})')
  for plugin in plugins.get_timeseries_plugins():
    if debug_plugin and plugin.name != debug_plugin:
      LOGGER.info(f'skipping {plugin.name}')
      continue
    num_desc, num_ts = 0, 0
    for result in plugin.func(resources):
      if not result:
        continue
      # append result to the relevant collection (descriptors or timeseries)
      if isinstance(result, plugins.MetricDescriptor):
        descriptors.append(result)
        num_desc += 1
      elif isinstance(result, plugins.TimeSeries):
        timeseries.append(result)
        num_ts += 1
    LOGGER.info(f'{plugin.name}: {num_desc} descriptors {num_ts} timeseries')
  LOGGER.info('timeseries calc end (descriptors: {} timeseries: {})'.format(
      len(descriptors), len(timeseries)))