@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
57 lines (56 loc) • 2.19 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const sdk_1 = require("@cloudgraph/sdk");
const translations_1 = __importDefault(require("../../properties/translations"));
const format_1 = require("../../utils/format");
const generateArns_1 = require("../../utils/generateArns");
/**
* EBS
*/
exports.default = ({ service: rawData, account, region, }) => {
const { Attachments: attachments = [], AvailabilityZone: availabilityZone, CreateTime: createTime, Encrypted: encrypted, MultiAttachEnabled: multiAttachEnabled, State: state, Size: size, SnapshotId: snapshot, Iops: iops, VolumeType: volumeType, Permissions: permissions = [], VolumeId: id, Tags: tags, } = rawData;
const arn = generateArns_1.ebsVolumeArn({ region, account, id });
// Format volume permissions
const volumePermissions = permissions.map(permission => {
return {
id: sdk_1.generateUniqueId({ arn, ...permission }),
group: permission.Group,
userId: permission.UserId,
};
});
// Format volume attachments
const volumeAttachments = attachments.map(attachment => {
const attachmentId = `${attachment.InstanceId}:${attachment.Device} (${attachment.State})`;
return {
id: attachmentId,
attachmentInformation: attachmentId,
attachedTime: attachment.AttachTime.toISOString(),
deleteOnTermination: attachment.DeleteOnTermination,
};
});
// Format volume tags
const volumeTags = format_1.formatTagsFromMap(tags);
const ebs = {
id,
accountId: account,
arn,
region,
attachments: volumeAttachments,
iops,
size: `${size} ${translations_1.default.gib}`,
state,
created: createTime.toISOString(),
snapshot,
encrypted,
isBootDisk: false,
volumeType,
availabilityZone,
multiAttachEnabled,
permissions: volumePermissions,
tags: volumeTags,
};
return ebs;
};