UNPKG

@csermet/multiprovider

Version:

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

49 lines (48 loc) 1.88 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const omit_1 = __importDefault(require("lodash/omit")); const head_1 = __importDefault(require("lodash/head")); const format_1 = require("../../utils/format"); const generateArns_1 = require("../../utils/generateArns"); /** * Route Table */ exports.default = ({ service: rawData, account, region, }) => { const { RouteTableId: id, VpcId: vpcId, Associations: associations = [], Routes: routes = [], Tags: tags = {}, } = rawData; // Subnet associations ids const subnetAssociations = associations .filter(({ RouteTableId: rtId, SubnetId }) => rtId === id && SubnetId) .map(({ SubnetId }) => SubnetId); // Formatted routes const formattedRoutes = routes.map(route => ({ destination: route.DestinationCidrBlock || route.DestinationIpv6CidrBlock || route.DestinationPrefixListId, target: head_1.default(Object.values(omit_1.default(route, [ 'DestinationCidrBlock', 'DestinationIpv6CidrBlock', 'DestinationPrefixListId', 'Origin', 'State', ]))), })); // Format Route Table Tags const routeTableTags = format_1.formatTagsFromMap(tags); const mainRouteTable = id === (associations.find(({ Main }) => Main) || {}).RouteTableId; const routeTable = { id, accountId: account, arn: generateArns_1.routeTableArn({ region, account, id }), region, vpcId, routes: formattedRoutes, mainRouteTable, tags: routeTableTags, subnetAssociations, explicitlyAssociatedWithSubnets: subnetAssociations.length, }; return routeTable; };