UNPKG

@csermet/multiprovider

Version:

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

72 lines (71 loc) 2.6 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")); const generateArns_1 = require("../../utils/generateArns"); /** * ELB */ exports.default = ({ service: loadbalancer, data, account, region, }) => { const connections = []; const { LoadBalancerName: loadBalancerName, SecurityGroups: loadbalancerSecurityGroups, VPCId: vpcId, Subnets = [], } = loadbalancer; const id = generateArns_1.elbArn({ region, account, name: loadBalancerName }); /** * Find Security Groups VPC Security Groups * related to this ELB loadbalancer */ const securityGroups = data.find(({ name }) => name === services_1.default.sg); const sgIds = loadbalancerSecurityGroups.map(sgId => sgId); if (securityGroups?.data?.[region]) { const sgsInRegion = securityGroups.data[region].filter(({ GroupId }) => sgIds.includes(GroupId)); if (!isEmpty_1.default(sgsInRegion)) { for (const sg of sgsInRegion) { connections.push({ id: sg.GroupId, resourceType: services_1.default.sg, relation: 'child', field: 'securityGroups', }); } } } /** * Find VPCs * related to this ELB loadbalancer */ const vpcs = data.find(({ name }) => name === services_1.default.vpc); if (vpcs?.data?.[region]) { const vpc = vpcs.data[region].find(({ VpcId }) => VpcId === vpcId); if (vpc) { connections.push({ id: vpc.VpcId, resourceType: services_1.default.vpc, relation: 'child', field: 'vpc', }); } } /** * Find Subnets * related to this ELB loadbalancer */ const subnets = data.find(({ name }) => name === services_1.default.subnet); if (subnets?.data?.[region]) { const subnet = subnets.data[region].find(({ SubnetId }) => Subnets.includes(SubnetId)); if (subnet) { connections.push({ id: subnet.SubnetId, resourceType: services_1.default.subnet, relation: 'child', field: 'subnet', }); } } const elbResult = { [id]: connections, }; return elbResult; };