@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
114 lines (113 loc) • 5.21 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const sdk_1 = require("@cloudgraph/sdk");
const format_1 = require("../../utils/format");
exports.default = ({ service, account, region, }) => {
const { ClusterArn: arn, Status: status, Ec2InstanceAttributes: ec2InstanceAttributes, InstanceCollectionType: instanceCollectionType, LogUri: logUri, LogEncryptionKmsKeyId: logEncryptionKmsKeyId, RequestedAmiVersion: requestedAmiVersion, RunningAmiVersion: runningAmiVersion, ReleaseLabel: releaseLabel, AutoTerminate: autoTerminate, TerminationProtected: terminationProtected, VisibleToAllUsers: visibleToAllUsers, NormalizedInstanceHours: normalizedInstanceHours, MasterPublicDnsName: masterPublicDnsName, Configurations: configurations, SecurityConfiguration: securityConfiguration, ScaleDownBehavior: scaleDownBehavior, CustomAmiId: customAmiId, EbsRootVolumeSize: ebsRootVolumeSize, RepoUpgradeOnBoot: repoUpgradeOnBoot, KerberosAttributes: kerberosAttributes, OutpostArn: outpostArn, StepConcurrencyLevel: stepConcurrencyLevel, Tags, } = service;
const { State: state, StateChangeReason: stateChangeReason, Timeline: timeline, } = status ?? {};
const { Ec2KeyName: ec2KeyName, Ec2SubnetId: ec2SubnetId, RequestedEc2SubnetIds: requestedEc2SubnetIds, Ec2AvailabilityZone: ec2AvailabilityZone, RequestedEc2AvailabilityZones: requestedEc2AvailabilityZones, IamInstanceProfile: iamInstanceProfile, EmrManagedMasterSecurityGroup: emrManagedMasterSecurityGroup, EmrManagedSlaveSecurityGroup: emrManagedSlaveSecurityGroup, ServiceAccessSecurityGroup: serviceAccessSecurityGroup, AdditionalMasterSecurityGroups: additionalMasterSecurityGroups, AdditionalSlaveSecurityGroups: additionalSlaveSecurityGroups, } = ec2InstanceAttributes ?? {};
const applications = service?.Applications?.map(app => ({
id: sdk_1.generateUniqueId({
arn,
...app,
}),
name: app.Name,
version: app.Version,
args: app.Args,
additionalInfo: Object.keys(app.AdditionalInfo || {})?.map(key => ({
id: sdk_1.generateUniqueId({
arn,
key,
value: app.AdditionalInfo[key],
}),
key,
value: app.AdditionalInfo[key],
})),
}));
const { Realm: realm, KdcAdminPassword: kdcAdminPassword, CrossRealmTrustPrincipalPassword: crossRealmTrustPrincipalPassword, ADDomainJoinUser: adDomainJoinUser, ADDomainJoinPassword: adDomainJoinPassword, } = kerberosAttributes ?? {};
const configConverter = (config) => ({
id: sdk_1.generateUniqueId({
arn,
...config,
}),
classification: config.Classification,
configurations: config.Configurations?.map(child => configConverter(child)),
properties: Object.keys(config.Properties || {})?.map(key => ({
id: sdk_1.generateUniqueId({
arn,
key,
value: config.Properties[key],
}),
key,
value: config.Properties[key],
})),
});
const placementGroups = service.PlacementGroups?.map(pg => ({
id: sdk_1.generateUniqueId({
arn,
...pg,
}),
instanceRole: pg.InstanceRole,
placementStrategy: pg.PlacementStrategy,
}));
return {
id: arn,
arn,
accountId: account,
region,
status: {
state,
stateChangeReason: {
code: stateChangeReason?.Code,
message: stateChangeReason?.Message,
},
timeline: {
creationDateTime: timeline?.CreationDateTime?.toISOString(),
readyDateTime: timeline?.ReadyDateTime?.toISOString(),
endDateTime: timeline?.EndDateTime?.toISOString(),
},
},
ec2InstanceAttributes: {
ec2KeyName,
ec2SubnetId,
requestedEc2SubnetIds,
ec2AvailabilityZone,
requestedEc2AvailabilityZones,
iamInstanceProfile,
emrManagedMasterSecurityGroup,
emrManagedSlaveSecurityGroup,
serviceAccessSecurityGroup,
additionalMasterSecurityGroups,
additionalSlaveSecurityGroups,
},
instanceCollectionType,
logUri,
logEncryptionKmsKeyId,
requestedAmiVersion,
runningAmiVersion,
releaseLabel,
autoTerminate,
terminationProtected,
visibleToAllUsers,
applications,
normalizedInstanceHours,
masterPublicDnsName,
configurations: configurations?.map(child => configConverter(child)),
securityConfiguration,
scaleDownBehavior,
customAmiId,
ebsRootVolumeSize,
repoUpgradeOnBoot,
kerberosAttributes: {
realm,
kdcAdminPassword,
crossRealmTrustPrincipalPassword,
adDomainJoinUser,
adDomainJoinPassword,
},
outpostArn,
stepConcurrencyLevel,
placementGroups,
tags: format_1.formatTagsFromMap(Tags),
};
};