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