UNPKG

@csermet/multiprovider

Version:

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

75 lines (74 loc) 3.65 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const lodash_1 = require("lodash"); const translations_1 = __importDefault(require("../../properties/translations")); const format_1 = require("../../utils/format"); const generateArns_1 = require("../../utils/generateArns"); const resources_1 = __importDefault(require("../../enums/resources")); /** * ELB */ exports.default = ({ service: rawData, account, region, }) => { const { CanonicalHostedZoneNameID: hostedZone, LoadBalancerName: loadBalancerName, DNSName: dnsName, CreatedTime: createdAt, Scheme: scheme, VPCId: vpcId, Subnets: subnets, SecurityGroups: securityGroups = [], SourceSecurityGroup: { OwnerAlias: ownerAlias, GroupName: groupName }, HealthCheck: { Target: target, Interval: interval, Timeout: timeout, HealthyThreshold: healthyThreshold, UnhealthyThreshold: unhealthyThreshold, } = {}, Attributes: { AccessLog: accesslog, CrossZoneLoadBalancing: crossZoneLoadBalancing, ConnectionSettings: connectionSettings, ConnectionDraining: connectionDraining, } = {}, ListenerDescriptions: listenerDescriptions, Tags: tags = {}, } = rawData; // Format ELB Listeners const listeners = listenerDescriptions .filter(({ Listener }) => Listener?.Protocol && Listener?.LoadBalancerPort && Listener?.InstanceProtocol && Listener?.LoadBalancerPort) .map(({ Listener: { Protocol, LoadBalancerPort, InstanceProtocol, InstancePort, SSLCertificateId, }, }) => { return { id: `${loadBalancerName}-${Protocol}-${LoadBalancerPort}-${lodash_1.kebabCase(resources_1.default.acm)}`, name: `${Protocol}-${LoadBalancerPort} ${translations_1.default.listener}`, loadBalancerPort: LoadBalancerPort, loadBalancerProtocol: Protocol, instancePort: InstancePort, instanceProtocol: InstanceProtocol, sslCertificateId: SSLCertificateId, }; }); // Format ELB Tags const elbTags = format_1.formatTagsFromMap(tags); const arn = generateArns_1.elbArn({ region, account, name: loadBalancerName }); const elb = { id: arn, name: loadBalancerName, accountId: account, arn, region, dnsName, createdAt: createdAt.toISOString(), hostedZone, type: translations_1.default.classic, scheme, vpcId, sourceSecurityGroup: { ownerAlias, groupName, }, securityGroupsIds: securityGroups, subnets, accessLogs: accesslog?.Enabled ? translations_1.default.enabled : translations_1.default.disabled, crossZoneLoadBalancing: crossZoneLoadBalancing?.Enabled ? translations_1.default.enabled : translations_1.default.disabled, idleTimeout: `${connectionSettings?.IdleTimeout || 0} ${translations_1.default.seconds}`, instances: { connectionDraining: connectionDraining?.Enabled ? translations_1.default.enabled : translations_1.default.disabled, connectionDrainingTimeout: `${connectionDraining?.Timeout || 0} ${translations_1.default.seconds}`, }, healthCheck: { target, interval: `${interval} ${translations_1.default.seconds}`, timeout: `${timeout} ${translations_1.default.seconds}`, healthyThreshold, unhealthyThreshold, }, listeners, tags: elbTags, }; return elb; };