@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
JavaScript
;
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