@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
149 lines (148 loc) • 8.39 kB
JavaScript
"use strict";
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");
exports.default = ({ service: rawData, account, region, }) => {
const { AutoScalingGroupARN: arn, AutoScalingGroupName: name, LaunchConfigurationName: launchConfigurationName, LaunchTemplate: launchTemplate, MixedInstancesPolicy: mixedInstancesPolicy, MinSize: minSize, MaxSize: maxSize, DesiredCapacity: desiredCapacity, PredictedCapacity: predictedCapacity, DefaultCooldown: cooldown, AvailabilityZones: availabilityZones = [], LoadBalancerNames: loadBalancerNames = [], TargetGroupARNs: targetGroupARNs, HealthCheckType: healthCheckType, HealthCheckGracePeriod: healthCheckGracePeriod, Instances: instances = [], SuspendedProcesses: suspendedProcesses = [], PlacementGroup: placementGroup, VPCZoneIdentifier: vpcZoneIdentifier, EnabledMetrics: enabledMetrics, Status: status, Tags: tags = {}, TerminationPolicies: terminationPolicies, NewInstancesProtectedFromScaleIn: newInstancesProtectedFromScaleIn, ServiceLinkedRoleARN: serviceLinkedRoleARN, MaxInstanceLifetime: maxInstanceLifetime, CapacityRebalance: capacityRebalanceEnabled, WarmPoolConfiguration: warmPoolConfiguration, WarmPoolSize: warmPoolSize, Context: context, LaunchConfiguration: launchConfiguration, } = rawData;
const ec2InstanceIds = instances.map(({ InstanceId }) => InstanceId);
const launchTemplateOverrideList = mixedInstancesPolicy?.LaunchTemplate?.Overrides.map(({ InstanceType: instanceType, WeightedCapacity: weightedCapacity, LaunchTemplateSpecification: launchTemplateSpecification, }) => {
return {
id: sdk_1.generateUniqueId({
arn,
instanceType,
weightedCapacity,
launchTemplateSpecification,
}),
instanceType,
weightedCapacity,
launchTemplateId: launchTemplateSpecification?.LaunchTemplateId || '',
launchTemplateName: launchTemplateSpecification?.LaunchTemplateName || '',
launchTemplateVersion: launchTemplateSpecification?.Version || '',
};
}) || [];
const suspendedProcessList = suspendedProcesses.map(({ ProcessName: processName, SuspensionReason: suspensionReason }) => {
return {
id: sdk_1.generateUniqueId({
arn,
processName,
suspensionReason,
}),
processName,
suspensionReason,
};
}) || [];
const enabledMetricsList = enabledMetrics.map(({ Metric: metric, Granularity: granularity }) => {
return {
id: sdk_1.generateUniqueId({
arn,
metric,
granularity,
}),
metric,
granularity,
};
}) || [];
const blockDeviceMappingList = launchConfiguration?.BlockDeviceMappings?.map(({ VirtualName: virtualName, DeviceName: deviceName, NoDevice: noDevice, }) => {
return {
id: sdk_1.generateUniqueId({
arn,
virtualName,
deviceName,
noDevice,
}),
virtualName,
deviceName,
noDevice: noDevice ? translations_1.default.yes : translations_1.default.no,
};
}) || [];
return {
id: arn,
accountId: account,
arn,
name,
region,
launchConfigurationName,
launchTemplateId: launchTemplate?.LaunchTemplateId || '',
launchTemplateName: launchTemplate?.LaunchTemplateName || '',
launchTemplateVersion: launchTemplate?.Version || '',
mixedInstancesPolicy: {
launchTemplateId: mixedInstancesPolicy?.LaunchTemplate?.LaunchTemplateSpecification
?.LaunchTemplateId || '',
launchTemplateName: mixedInstancesPolicy?.LaunchTemplate?.LaunchTemplateSpecification
?.LaunchTemplateName || '',
launchTemplateVersion: mixedInstancesPolicy?.LaunchTemplate?.LaunchTemplateSpecification
?.Version || '',
launchTemplateOverrides: launchTemplateOverrideList,
instDistrOnDemandAllocationStrategy: mixedInstancesPolicy?.InstancesDistribution
?.OnDemandAllocationStrategy || '',
instDistrOnDemandBaseCapacity: mixedInstancesPolicy?.InstancesDistribution?.OnDemandBaseCapacity || 0,
instDistrOnDemandPercentageAboveBaseCapacity: mixedInstancesPolicy?.InstancesDistribution
?.OnDemandPercentageAboveBaseCapacity || 0,
instDistrSpotAllocationStrategy: mixedInstancesPolicy?.InstancesDistribution?.SpotAllocationStrategy ||
'',
instDistrSpotInstancePools: mixedInstancesPolicy?.InstancesDistribution?.SpotInstancePools || 0,
instDistrSpotMaxPrice: mixedInstancesPolicy?.InstancesDistribution?.SpotMaxPrice || '',
},
minSize,
maxSize,
desiredCapacity,
predictedCapacity: predictedCapacity || 0,
cooldown,
availabilityZones,
loadBalancerNames,
targetGroupARNs,
healthCheckType,
healthCheckGracePeriod,
ec2InstanceIds,
suspendedProcesses: suspendedProcessList,
placementGroup: placementGroup || '',
vpcZoneIdentifier,
enabledMetrics: enabledMetricsList,
status: status || '',
terminationPolicies,
newInstancesProtectedFromScaleIn: newInstancesProtectedFromScaleIn
? translations_1.default.yes
: translations_1.default.no,
serviceLinkedRoleARN,
maxInstanceLifetime: maxInstanceLifetime || 0,
capacityRebalanceEnabled: capacityRebalanceEnabled ? translations_1.default.yes : translations_1.default.no,
warmPoolConfigMaxGroupPreparedCapacity: warmPoolConfiguration?.MaxGroupPreparedCapacity || 0,
warmPoolConfigMinSize: warmPoolConfiguration?.MinSize || 0,
warmPoolConfigPoolState: warmPoolConfiguration?.PoolState || '',
warmPoolConfigStatus: warmPoolConfiguration?.Status || '',
warmPoolSize: warmPoolSize || 0,
context: context || '',
tags: format_1.formatTagsFromMap(tags),
launchConfiguration: {
launchConfigurationName: launchConfiguration?.LaunchConfigurationName || '',
launchConfigurationARN: launchConfiguration?.LaunchConfigurationARN || '',
imageId: launchConfiguration?.ImageId || '',
keyName: launchConfiguration?.KeyName || '',
securityGroups: launchConfiguration?.SecurityGroups || [],
classicLinkVPCId: launchConfiguration?.ClassicLinkVPCId || '',
classicLinkVPCSecurityGroups: launchConfiguration?.ClassicLinkVPCSecurityGroups || [],
userData: launchConfiguration?.UserData || '',
instanceType: launchConfiguration?.InstanceType || '',
kernelId: launchConfiguration?.KernelId || '',
ramdiskId: launchConfiguration?.RamdiskId || '',
blockDeviceMappings: blockDeviceMappingList,
instanceMonitoring: launchConfiguration?.InstanceMonitoring?.Enabled
? translations_1.default.yes
: translations_1.default.no,
spotPrice: launchConfiguration?.SpotPrice || '',
iamInstanceProfile: launchConfiguration?.IamInstanceProfile || '',
ebsOptimized: launchConfiguration?.EbsOptimized ? translations_1.default.yes : translations_1.default.no,
associatePublicIpAddress: launchConfiguration?.AssociatePublicIpAddress
? translations_1.default.yes
: translations_1.default.no,
placementTenancy: launchConfiguration?.PlacementTenancy || '',
metadataOptHttpTokens: launchConfiguration?.MetadataOptions?.HttpTokens || '',
metadataOptHttpPutResponseHopLimit: launchConfiguration?.MetadataOptions?.HttpPutResponseHopLimit || 0,
metadataOptHttpEndpoint: launchConfiguration?.MetadataOptions?.HttpEndpoint || '',
},
};
};