cloud-report
Version:
Collects and analyzes cloud resources
45 lines (44 loc) • 2.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("../../../types");
const utils_1 = require("../../../utils");
const base_1 = require("../../base");
class ElasticIPsUsageAnalyzer extends base_1.BaseAnalyzer {
analyze(params, fullReport) {
const allElasticIPs = params.elastic_ips;
if (!allElasticIPs) {
return undefined;
}
const elastic_ips_unused = { type: types_1.CheckAnalysisType.CostOptimization };
elastic_ips_unused.what = "Are there any elastic IPs unused?";
elastic_ips_unused.why = "Elastic IPs are not free so we shouldn't keep unused IPs";
elastic_ips_unused.recommendation = "Recommended delete unused elastic IPs";
elastic_ips_unused.benchmark = ['all'];
const allRegionsAnalysis = {};
for (const region in allElasticIPs) {
const regionElasticIPs = allElasticIPs[region];
allRegionsAnalysis[region] = [];
for (const elasticIp of regionElasticIPs) {
const elasticIPAnalysis = {};
elasticIPAnalysis.resource = elasticIp;
elasticIPAnalysis.resourceSummary = {
name: "ElasticIP",
value: `${utils_1.ResourceUtil.getNameByTags(elasticIp)} | ${elasticIp.PublicIp}`,
};
if (elasticIp.AssociationId || elasticIp.InstanceId) {
elasticIPAnalysis.severity = types_1.SeverityStatus.Good;
elasticIPAnalysis.message = "ElasticIP is used";
}
else {
elasticIPAnalysis.severity = types_1.SeverityStatus.Failure;
elasticIPAnalysis.message = "ElasticIP is not used";
elasticIPAnalysis.action = "Delete the ElasticIP";
}
allRegionsAnalysis[region].push(elasticIPAnalysis);
}
}
elastic_ips_unused.regions = allRegionsAnalysis;
return { elastic_ips_unused };
}
}
exports.ElasticIPsUsageAnalyzer = ElasticIPsUsageAnalyzer;