UNPKG

@csermet/multiprovider

Version:

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

85 lines (84 loc) 3.43 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: networkInterface, data, region, }) => { const { NetworkInterfaceId, SubnetId, Groups = [] } = networkInterface; const sgIds = Groups.map(({ GroupId }) => GroupId); const connections = []; /** * Find Subnets used in Network Interface */ const subnets = data.find(({ name }) => name === services_1.default.subnet); if (subnets?.data?.[region]) { const subnetsInRegion = subnets.data[region].filter(({ SubnetId: sId }) => sId === SubnetId); if (!lodash_1.isEmpty(subnetsInRegion)) { for (const subnet of subnetsInRegion) { const { SubnetId: id } = subnet; connections.push({ id, resourceType: services_1.default.subnet, relation: 'child', field: 'subnet', }); } } } /** * Find any FlowLog related data */ const flowLogs = data.find(({ name }) => name === services_1.default.flowLog); if (flowLogs?.data?.[region]) { const dataAtRegion = flowLogs.data[region].filter(({ ResourceId }) => ResourceId === NetworkInterfaceId); for (const flowLog of dataAtRegion) { connections.push({ id: flowLog.FlowLogId, resourceType: services_1.default.flowLog, relation: 'child', field: 'flowLogs', }); } } /** * Find any sageMakerNotebookInstance related data */ const notebooks = data.find(({ name }) => name === services_1.default.sageMakerNotebookInstance); if (notebooks?.data?.[region]) { const dataAtRegion = notebooks.data[region].filter(({ NetworkInterfaceId: notebookNetworkInterfaceId, }) => notebookNetworkInterfaceId === NetworkInterfaceId); for (const notebook of dataAtRegion) { connections.push({ id: notebook.NotebookInstanceArn, resourceType: services_1.default.sageMakerNotebookInstance, relation: 'child', field: 'sageMakerNotebookInstances', }); } } /** * Find related security groups */ const securityGroups = data.find(({ name }) => name === services_1.default.sg); if (securityGroups?.data?.[region]) { const securityGroupsInRegion = securityGroups.data[region].filter(({ GroupId }) => !lodash_1.isEmpty(sgIds) && sgIds.filter(str => str.toLowerCase().includes(GroupId.toLowerCase())) .length > 0); if (!lodash_1.isEmpty(securityGroupsInRegion)) { for (const securityGroup of securityGroupsInRegion) { const { GroupId: id } = securityGroup; connections.push({ id, resourceType: services_1.default.sg, relation: 'child', field: 'securityGroups', }); } } } const natResult = { [NetworkInterfaceId]: connections, }; return natResult; };