newrelic
Version:
New Relic agent
41 lines (35 loc) • 1.2 kB
JavaScript
/*
* Copyright 2020 New Relic Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*/
const logger = require('../logger').child({ component: 'utilization' })
const VENDOR_METHODS = {
aws: require('./aws-info'),
azure: require('./azure-info'),
azurefunction: require('./azurefunction-info'),
docker: require('./docker-info').getVendorInfo,
ecs: require('./ecs-info'),
gcp: require('./gcp-info'),
kubernetes: require('./kubernetes-info'),
pcf: require('./pcf-info')
}
const VENDOR_NAMES = Object.keys(VENDOR_METHODS)
module.exports.getVendors = getVendors
function getVendors(agent, callback) {
let done = 0
let vendors = null
VENDOR_NAMES.forEach(function getVendorInfo(vendor) {
logger.trace({ utilization: vendor }, 'Detecting utilization info for vendor %s', vendor)
VENDOR_METHODS[vendor](agent, function getInfo(_, result) {
logger.trace({ utilization: vendor, data: { result } }, 'Vendor %s finished.', vendor)
if (result) {
vendors = vendors || Object.create(null)
vendors[vendor] = result
}
if (++done === VENDOR_NAMES.length) {
callback(null, vendors)
}
})
})
}