@cloud-carbon-footprint/aws
Version:
The core logic to get cloud usage data and estimate energy and carbon emissions from Amazon Web Services.
57 lines • 3.44 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const common_1 = require("@cloud-carbon-footprint/common");
const AWSInstanceTypes_1 = require("../../AWSInstanceTypes");
const core_1 = require("@cloud-carbon-footprint/core");
const ComputeOptimizerRecommendationWithProcessors_1 = __importDefault(require("./ComputeOptimizerRecommendationWithProcessors"));
class EC2TargetComputeOptimizerRecommendation extends ComputeOptimizerRecommendationWithProcessors_1.default {
constructor(computeOptimizerRecommendationData) {
super(computeOptimizerRecommendationData);
this.accountName = this.accountId;
this.instanceName = computeOptimizerRecommendationData.instanceName;
this.region = this.getRegion(computeOptimizerRecommendationData.instanceArn);
this.resourceId = this.getResourceId(computeOptimizerRecommendationData.instanceArn);
this.recommendationOptions = [
{
instanceType: computeOptimizerRecommendationData.recommendationOptions_1_instanceType,
costSavings: computeOptimizerRecommendationData.recommendationOptions_1_estimatedMonthlySavings_value,
performanceRisk: computeOptimizerRecommendationData.recommendationOptions_1_performanceRisk,
vcpus: computeOptimizerRecommendationData.recommendationOptions_1_vcpus,
},
{
instanceType: computeOptimizerRecommendationData.recommendationOptions_2_instanceType,
costSavings: computeOptimizerRecommendationData.recommendationOptions_2_estimatedMonthlySavings_value,
performanceRisk: computeOptimizerRecommendationData.recommendationOptions_2_performanceRisk,
vcpus: computeOptimizerRecommendationData.recommendationOptions_2_vcpus,
},
{
instanceType: computeOptimizerRecommendationData.recommendationOptions_3_instanceType,
costSavings: computeOptimizerRecommendationData.recommendationOptions_3_estimatedMonthlySavings_value,
performanceRisk: computeOptimizerRecommendationData.recommendationOptions_3_performanceRisk,
vcpus: computeOptimizerRecommendationData.recommendationOptions_3_vcpus,
},
];
const optimalRecommendation = this.getOptimalRecommendation(this.recommendationOptions);
this.instanceType = optimalRecommendation.instanceType;
this.description = this.instanceType;
this.targetVcpus = optimalRecommendation.vcpus;
this.costSavings = parseFloat(optimalRecommendation.costSavings);
this.vCpuHours = this.getVCpuHours(this.targetVcpus, this.instanceType);
this.usageAmount = (0, common_1.getHoursInMonth)();
}
getComputeProcessors() {
return (AWSInstanceTypes_1.INSTANCE_TYPE_COMPUTE_PROCESSOR_MAPPING[this.instanceType] || [
core_1.COMPUTE_PROCESSOR_TYPES.UNKNOWN,
]);
}
getGPUComputeProcessors() {
return (AWSInstanceTypes_1.INSTANCE_TYPE_GPU_PROCESSOR_MAPPING[this.instanceType] || [
core_1.COMPUTE_PROCESSOR_TYPES.UNKNOWN,
]);
}
}
exports.default = EC2TargetComputeOptimizerRecommendation;
//# sourceMappingURL=EC2TargetComputeOptimizerRecommendation.js.map