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