UNPKG

@csermet/multiprovider

Version:

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

52 lines (51 loc) 1.98 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 services_1 = __importDefault(require("../../enums/services")); exports.default = ({ account, service, data, region, }) => { const { Id: id, Ec2InstanceId, EbsVolumes } = service; const connections = []; /** * Find EC2 Instances */ const ec2Instances = data.find(({ name }) => name === services_1.default.ec2Instance); if (ec2Instances?.data?.[region]) { const ec2InstanceInRegion = ec2Instances.data[region].filter(({ InstanceId }) => InstanceId === Ec2InstanceId); if (!lodash_1.isEmpty(ec2InstanceInRegion)) { for (const ec2instance of ec2InstanceInRegion) { const ec2InstanceId = ec2instance.InstanceId; connections.push({ id: ec2InstanceId, resourceType: services_1.default.ec2Instance, relation: 'child', field: 'ec2Instance', }); } } } /** * Find EBS volumes */ const ebsVolumes = data.find(({ name }) => name === services_1.default.ebs); const ebsVolumeIds = EbsVolumes.map(({ VolumeId }) => VolumeId); if (ebsVolumes?.data?.[region]) { const volumesInRegion = ebsVolumes.data[region].filter(({ VolumeId }) => ebsVolumeIds.includes(VolumeId)); if (!lodash_1.isEmpty(volumesInRegion)) { for (const v of volumesInRegion) { connections.push({ id: v.VolumeId, resourceType: services_1.default.ebs, relation: 'child', field: 'ebs', }); } } } const result = { [id]: connections, }; return result; };