UNPKG

@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
"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