cloud-report
Version:
Collects and analyzes cloud resources
47 lines (46 loc) • 2.26 kB
JavaScript
;
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;