@cloud-carbon-footprint/aws
Version:
The core logic to get cloud usage data and estimate energy and carbon emissions from Amazon Web Services.
36 lines (32 loc) • 1.4 kB
text/typescript
/*
* © 2021 Thoughtworks, Inc.
*/
import { RightsizingRecommendation as AwsRightsizingRecommendation } from 'aws-sdk/clients/costexplorer'
import { getHoursInMonth } from '@cloud-carbon-footprint/common'
import RightsizingRecommendation from './RightsizingRecommendation'
export default class RightsizingCurrentRecommendation extends RightsizingRecommendation {
constructor(rightsizingRecommendationData: AwsRightsizingRecommendation) {
super(rightsizingRecommendationData)
this.accountId = rightsizingRecommendationData.AccountId
this.type = rightsizingRecommendationData.RightsizingType
this.region = this.getMappedRegion(
rightsizingRecommendationData.CurrentInstance.ResourceDetails
.EC2ResourceDetails.Region,
)
this.instanceName =
rightsizingRecommendationData.CurrentInstance.InstanceName
this.instanceType =
rightsizingRecommendationData.CurrentInstance.ResourceDetails.EC2ResourceDetails.InstanceType
this.vCpuHours = this.getVCpuHours(
rightsizingRecommendationData.CurrentInstance.ResourceDetails
.EC2ResourceDetails,
)
this.resourceId = rightsizingRecommendationData.CurrentInstance.ResourceId
this.costSavings =
parseFloat(
rightsizingRecommendationData.TerminateRecommendationDetail
?.EstimatedMonthlySavings,
) || 0
this.usageAmount = getHoursInMonth()
}
}