@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
49 lines (48 loc) • 1.88 kB
JavaScript
;
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;
};