@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
86 lines (85 loc) • 3.19 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const sdk_1 = require("@cloudgraph/sdk");
const format_1 = require("../../utils/format");
const generateArns_1 = require("../../utils/generateArns");
/**
* Vpn Connections
*/
exports.default = ({ service: rawData, account, region, }) => {
const { Tags: tags, VpnConnectionId: id, CustomerGatewayId: cgwId, Category: category, State: state, Type: type, VpnGatewayId: vpnGatewayId, TransitGatewayId: tgwId, Options: options, Routes: routes, VgwTelemetry: vgwTelemetry, } = rawData;
const vpnConnectionTags = format_1.formatTagsFromMap(tags);
const arn = generateArns_1.vpnConnectionArn({ region, account, id });
const vpnOptions = {
id: sdk_1.generateUniqueId({
arn,
...options,
}),
enableAcceleration: options?.EnableAcceleration,
staticRoutesOnly: options?.StaticRoutesOnly,
localIpv4NetworkCidr: options?.LocalIpv4NetworkCidr,
remoteIpv4NetworkCidr: options?.RemoteIpv4NetworkCidr,
tunnelInsideIpVersion: options?.TunnelInsideIpVersion,
tunnelOptions: options?.TunnelOptions?.map(({ OutsideIpAddress: outsideIpAddress, TunnelInsideCidr: tunnelInsideCidr, PreSharedKey: preSharedKey, }) => {
return {
id: sdk_1.generateUniqueId({
arn,
outsideIpAddress,
tunnelInsideCidr,
preSharedKey,
}),
outsideIpAddress,
tunnelInsideCidr,
preSharedKey,
};
}),
};
const vpnVgwTelemetry = vgwTelemetry.map(({ AcceptedRouteCount: acceptedRouteCount, LastStatusChange: lastStatusChange, CertificateArn: certificateArn, OutsideIpAddress: outsideIpAddress, Status: status, StatusMessage: statusMessage, }) => {
return {
id: sdk_1.generateUniqueId({
arn,
acceptedRouteCount,
lastStatusChange,
certificateArn,
outsideIpAddress,
status,
statusMessage,
}),
acceptedRouteCount,
lastStatusChange: lastStatusChange?.toISOString(),
certificateArn,
outsideIpAddress,
status: status?.toString(),
statusMessage,
};
});
const vpnRoutes = routes.map(({ DestinationCidrBlock: destinationCidrBlock, Source: source, State: routeState, }) => {
return {
id: sdk_1.generateUniqueId({
arn,
destinationCidrBlock,
source,
routeState,
}),
destinationCidrBlock,
source,
state: routeState,
};
});
const vpnConnection = {
id,
accountId: account,
arn,
tags: vpnConnectionTags,
category,
customerGatewayId: cgwId,
state,
type,
vpnGatewayId,
transitGatewayId: tgwId,
options: vpnOptions,
routes: vpnRoutes,
vgwTelemetry: vpnVgwTelemetry,
};
return vpnConnection;
};