UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

45 lines (44 loc) 2.17 kB
"use strict"; 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;