UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

47 lines (46 loc) 2.26 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 VolumesUsageAnalyzer extends base_1.BaseAnalyzer { analyze(params, fullReport) { const allVolumes = params.volumes; if (!allVolumes) { return undefined; } const volumes_unused = { type: types_1.CheckAnalysisType.CostOptimization }; volumes_unused.what = "Are there any EBS unused volumes?"; volumes_unused.why = `EBS volumes are costly resources so you should take snapshot and deleted the unused volumes`; volumes_unused.recommendation = `Recommended to delete unused EBS volumes once snapshot is taken incase if there will be need for that data later`; volumes_unused.benchmark = ['all']; const allRegionsAnalysis = {}; for (const region in allVolumes) { const regionVolumes = allVolumes[region]; allRegionsAnalysis[region] = []; for (const volume of regionVolumes) { const volumeAnalysis = {}; volumeAnalysis.resource = volume; volumeAnalysis.resourceSummary = { name: "Volume", value: `${utils_1.ResourceUtil.getNameByTags(volume)} | ${volume.VolumeId}`, }; if (volume.Attachments && volume.Attachments.length) { volumeAnalysis.severity = types_1.SeverityStatus.Good; volumeAnalysis.message = `Volume is attached to ${volume.Attachments[0].InstanceId}`; } else { volumeAnalysis.severity = types_1.SeverityStatus.Warning; volumeAnalysis.message = "Volume is not attached"; volumeAnalysis.action = "Delete the volume after taking the snapshot"; } allRegionsAnalysis[region].push(volumeAnalysis); } } volumes_unused.regions = allRegionsAnalysis; return { volumes_unused }; } } exports.VolumesUsageAnalyzer = VolumesUsageAnalyzer;