UNPKG

@csermet/multiprovider

Version:

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

149 lines (148 loc) 8.39 kB
"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 || '', }, }; };