@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
105 lines (104 loc) • 3.57 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const services_1 = __importDefault(require("../../enums/services"));
/**
* ALBs
*/
exports.default = ({ service: alb, data, region, }) => {
const { LoadBalancerArn: id, SecurityGroups: securityGroups = [], AvailabilityZones: azs = [], } = alb;
const connections = [];
/**
* Find any EC2 Instances
*/
const ec2Instances = data.find(({ name }) => name === services_1.default.ec2Instance);
if (ec2Instances?.data?.[region]) {
const dataAtRegion = ec2Instances.data[region].filter(instance => alb.targetIds.includes(instance.InstanceId));
for (const instance of dataAtRegion) {
const instanceId = instance.InstanceId;
connections.push({
id: instanceId,
resourceType: services_1.default.ec2Instance,
relation: 'child',
field: 'ec2Instance',
});
}
}
/**
* Add subnets
*/
connections.push(...azs
.filter(i => i.SubnetId)
.map(({ SubnetId }) => ({
id: SubnetId,
resourceType: services_1.default.subnet,
relation: 'child',
field: 'subnet',
})));
/**
* Add Security Groups
*/
connections.push(...securityGroups.map(sg => ({
id: sg,
resourceType: services_1.default.sg,
relation: 'child',
field: 'securityGroups',
})));
/**
* Find any Route53 data
*/
// const route53ConnectionsData = []
// const {data: route53Data} = data.find(
// ({name}: {name: string}) => name === awsServices.route53
// ) || {data: []}
// if (!isEmpty(route53Data)) {
// const hostedZones: Array<any> = route53Data.map(
// awsRoute53HostedZoneConverter
// )
// if (!isEmpty(hostedZones)) {
// /**
// * Check for any connection between route 53 and other entities like CF, ELB
// * API Gateway... etc, and if we find them then add them to the route53ConnectionsData
// */
// hostedZones.map(data => {
// const {
// connectionLinks
// } = data
// if (!isEmpty(connectionLinks)) {
// connectionLinks.map(link => {
// /**
// * Make sure we have not already added the connection
// */
// const existingEntity = !route53ConnectionsData.find(
// ({id, connection: {id: connectionId}}) =>
// id === link.id && connectionId === link.connection.id
// )
// if (existingEntity) {
// route53ConnectionsData.push(link)
// }
// })
// }
// /**
// * Get rid of the connection links since those will live on the actual
// * Connected entities.
// */
// delete data.connectionLinks
// })
// }
// }
// const connections = route53ConnectionsData
// .filter(
// (
// {name, resourceType} // TODO: Fix this once ELB is converted
// ) =>
// resourceType === resourceTypes.elb &&
// name.includes(get(alb, albNames.dnsName))
// )
// .map(({connection}) => connection)
const albResult = {
[id]: connections,
};
return albResult;
};