UNPKG

@csermet/multiprovider

Version:

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

91 lines (90 loc) 3.83 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const isEmpty_1 = __importDefault(require("lodash/isEmpty")); const services_1 = __importDefault(require("../../enums/services")); /** * Transit Gateway Attachment */ exports.default = ({ service: transitGatewayAttachment, data, region, }) => { const connections = []; const { TransitGatewayAttachmentId: id, TransitGatewayId: transitGatewayId, Association: association, ResourceId: resourceId, } = transitGatewayAttachment; /** * Find Transit Gateway * related to this Transit Gateway Attachment */ const transitGateways = data.find(({ name }) => name === services_1.default.transitGateway); if (transitGateways?.data?.[region]) { const awsTransitGateways = transitGateways.data[region].filter(({ TransitGatewayId }) => TransitGatewayId === transitGatewayId); if (!isEmpty_1.default(awsTransitGateways)) { for (const transitGateway of awsTransitGateways) { connections.push({ id: transitGateway.TransitGatewayId, resourceType: services_1.default.transitGateway, relation: 'child', field: 'transitGateway', }); } } } /** * Find Transit Gateway Route Table * related to this Transit Gateway Attachment */ const routeTables = data.find(({ name }) => name === services_1.default.transitGatewayRouteTable); if (routeTables?.data?.[region]) { const associatedRouteTables = routeTables.data[region].filter(({ TransitGatewayRouteTableId }) => TransitGatewayRouteTableId === association?.TransitGatewayRouteTableId); if (!isEmpty_1.default(associatedRouteTables)) { for (const routeTable of associatedRouteTables) { connections.push({ id: routeTable.TransitGatewayRouteTableId, resourceType: services_1.default.transitGatewayRouteTable, relation: 'child', field: 'routeTable', }); } } } /** * Find VPCs * related to this Transit Gateway Attachment */ const vpcs = data.find(({ name }) => name === services_1.default.vpc); if (vpcs?.data?.[region]) { const associatedVPCs = vpcs.data[region].filter(({ VpcId }) => VpcId === resourceId); if (!isEmpty_1.default(associatedVPCs)) { for (const vpc of associatedVPCs) { connections.push({ id: vpc.VpcId, resourceType: services_1.default.vpc, relation: 'child', field: 'vpc', }); } } } /** * Find Vpn Connections * related to this Transit Gateway Attachment */ const vpnConnections = data.find(({ name }) => name === services_1.default.vpnConnection); if (vpnConnections?.data?.[region]) { const associatedVpnConnections = vpnConnections.data[region].filter(({ VpnConnectionId }) => VpnConnectionId === resourceId); if (!isEmpty_1.default(associatedVpnConnections)) { for (const vpnConnection of associatedVpnConnections) { connections.push({ id: vpnConnection.VpnConnectionId, resourceType: services_1.default.vpnConnection, relation: 'child', field: 'vpnConnection', }); } } } const transitGatewayAttachmentResult = { [id]: connections, }; return transitGatewayAttachmentResult; };