async function createCounters()

in src/autoscaler-common/counters-base.js [326:372]


async function createCounters(counterDefinitions) {
  await initMetrics();

  const meter = meterProvider.getMeter(COUNTERS_PREFIX);

  for (const counterDef of counterDefinitions) {
    if (!counterDef.counterName || !counterDef.counterDesc) {
      throw new Error(
        'invalid counter definition: ' + JSON.stringify(counterDef),
      );
    }
    if (COUNTERS.get(counterDef.counterName)) {
      throw new Error('Counter already created: ' + counterDef.counterName);
    }
    switch (counterDef.counterType || 'CUMULATIVE') {
      case 'CUMULATIVE':
        COUNTERS.set(counterDef.counterName, {
          cumulative: meter.createCounter(
            COUNTERS_PREFIX + counterDef.counterName,
            {
              description: counterDef.counterDesc,
              unit: counterDef.counterUnits,
            },
          ),
        });
        break;
      case 'HISTOGRAM':
        COUNTERS.set(counterDef.counterName, {
          histogram: meter.createHistogram(
            COUNTERS_PREFIX + counterDef.counterName,
            {
              description: counterDef.counterDesc,
              unit: counterDef.counterUnits,
              advice: {
                explicitBucketBoundaries: counterDef.counterHistogramBuckets,
              },
            },
          ),
        });
        break;
      default:
        throw new Error(
          `Invalid counter type for ${counterDef.counterName}: ${counterDef.counterType}`,
        );
    }
  }
}