UNPKG

@cloud-carbon-footprint/aws

Version:

The core logic to get cloud usage data and estimate energy and carbon emissions from Amazon Web Services.

40 lines 1.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getComputeUsage = void 0; const core_1 = require("@cloud-carbon-footprint/core"); const domain_1 = require("../domain"); function getNumberVcpusByDate(getCostAndUsageResponses, NODE_TYPES) { const vcpusByDate = []; getCostAndUsageResponses.forEach((response) => { response.ResultsByTime.forEach((result) => { if (result.Groups.length > 0) { vcpusByDate.push({ timestamp: result.TimePeriod.Start, id: 'vCPUs', value: result.Groups.reduce((sum, group) => { return (sum + Number.parseInt(group.Metrics.UsageQuantity.Amount) * NODE_TYPES[group.Keys[0].split(':')[1]]); }, 0), }); } }); }); return vcpusByDate; } function getComputeUsage(metricDataResponses, getCostAndUsageResponses, NODE_TYPES) { const metricDataResults = metricDataResponses.flatMap((response) => response.MetricDataResults); const rawCpuUtilizations = metricDataResults .flatMap(core_1.extractRawComputeUsages) .map((rawComputeUsage) => ({ ...rawComputeUsage, timestamp: rawComputeUsage.timestamp.substr(0, 10), })); const rawvCpuHours = getNumberVcpusByDate(getCostAndUsageResponses, NODE_TYPES); const cloudConstants = { avgCpuUtilization: domain_1.AWS_CLOUD_CONSTANTS.AVG_CPU_UTILIZATION_2020, }; return (0, core_1.buildComputeUsages)(rawCpuUtilizations.concat(rawvCpuHours), cloudConstants); } exports.getComputeUsage = getComputeUsage; //# sourceMappingURL=ComputeUsageMapper.js.map