UNPKG

@csermet/multiprovider

Version:

cloud-graph provider plugin for AWS used to fetch AWS cloud data.

56 lines (55 loc) 2.14 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const lodash_1 = require("lodash"); const services_1 = __importDefault(require("../../enums/services")); exports.default = ({ service: logGroup, data, region, }) => { const { logGroupName: id, kmsKeyId, MetricFilters: metricFilters } = logGroup; const connections = []; /** * Find KMS */ const kmsKeys = data.find(({ name }) => name === services_1.default.kms); if (kmsKeys?.data?.[region]) { const kmsKeyInRegion = kmsKeys.data[region].filter(kmsKey => kmsKey.Arn === kmsKeyId); if (!lodash_1.isEmpty(kmsKeyInRegion)) { for (const kms of kmsKeyInRegion) { connections.push({ id: kms.KeyId, resourceType: services_1.default.kms, relation: 'child', field: 'kms', }); } } } /** * Find Metric Alarms */ const metricAlarms = data.find(({ name }) => name === services_1.default.cloudwatch); let metricNames = []; metricFilters ?.map(({ metricTransformations }) => metricTransformations) ?.forEach(transformation => { metricNames = metricNames.concat(transformation?.map(({ metricName }) => metricName)); }); if (metricAlarms?.data?.[region] && !lodash_1.isEmpty(metricNames)) { const metricAlarmsInRegion = metricAlarms.data[region].filter(({ MetricName }) => metricNames.includes(MetricName)); if (!lodash_1.isEmpty(metricAlarmsInRegion)) { for (const metricAlarm of metricAlarmsInRegion) { connections.push({ id: metricAlarm.AlarmName, resourceType: services_1.default.cloudwatch, relation: 'child', field: 'cloudwatch', }); } } } const result = { [id]: connections, }; return result; };