UNPKG

@csermet/multiprovider

Version:

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

52 lines (51 loc) 2.12 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: natGw, data, region, }) => { const { NatGatewayId, NatGatewayAddresses, SubnetId } = natGw; const connections = []; /** * Find Network Interfaces used in NatGW */ const netInterfaces = data.find(({ name }) => name === services_1.default.networkInterface); if (netInterfaces?.data?.[region]) { const connectedNatInterfaces = netInterfaces.data[region].filter(({ NetworkInterfaceId: targetNetworkInterfaceId }) => !!NatGatewayAddresses.find(({ NetworkInterfaceId }) => NetworkInterfaceId === targetNetworkInterfaceId)); if (!lodash_1.isEmpty(connectedNatInterfaces)) { for (const netInterface of connectedNatInterfaces) { const { NetworkInterfaceId: id } = netInterface; connections.push({ id, resourceType: services_1.default.networkInterface, relation: 'child', field: 'networkInterface', }); } } } /** * Find Subnets used in NatGW */ 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', }); } } } const natResult = { [NatGatewayId]: connections, }; return natResult; };