cloud-report
Version:
Collects and analyzes cloud resources
42 lines (41 loc) • 2.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function generateCSV(reportData, options) {
const records = prepareRecords(reportData, options);
return records.map((record) => {
return record.join(",").replace(/\s+/g, " ");
}).join("\n");
}
exports.generateCSV = generateCSV;
function prepareRecords(reportData, options) {
options = options || { showIssuesOnly: false };
const records = [["ServiceName", "CheckName", "Region", "ResourceName",
"ResourceValue", "Message", "Action", "Severity"]];
for (const serviceName in reportData) {
for (const checkName in reportData[serviceName]) {
for (const regionName in reportData[serviceName][checkName].regions) {
let regionDetails = reportData[serviceName][checkName].regions[regionName];
if (!regionDetails) {
continue;
}
if (options.showIssuesOnly && regionDetails.length) {
regionDetails = regionDetails.filter((resourceDetails) => {
return resourceDetails.severity === "Warning" ||
resourceDetails.severity === "Failure";
});
reportData[serviceName][checkName].regions[regionName] = regionDetails;
}
for (const regionResourceDetails of regionDetails) {
records.push([serviceName, checkName, regionName,
regionResourceDetails.resourceSummary.name,
(regionResourceDetails.resourceSummary.value || "").replace(/,/g, " "),
(regionResourceDetails.message || "").replace(/,/g, " "),
(regionResourceDetails.action || "").replace(/,/g, " "),
(regionResourceDetails.severity || "")
]);
}
}
}
}
return records;
}