@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
82 lines (81 loc) • 3.78 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
// import { formatTagsFromMap } from '../../utils/format' // TODO: Build this
const sdk_1 = require("@cloudgraph/sdk");
const generateArns_1 = require("../../utils/generateArns");
/**
* SystemsManagerInstance
*/
exports.default = ({ account, service: rawData, region, }) => {
const { InstanceId: instanceId, PingStatus: pingStatus, LastPingDateTime: lastPingDateTime, AgentVersion: agentVersion, IsLatestVersion: isLatestVersion, PlatformType: platformType, PlatformName: platformName, PlatformVersion: platformVersion, ActivationId: activationId, RegistrationDate: registrationDate, ResourceType: resourceType, Name: name, IPAddress: ipAddress, ComputerName: computerName, AssociationStatus: associationStatus, LastAssociationExecutionDate: lastAssociationExecutionDate, LastSuccessfulAssociationExecutionDate: lastSuccessfulAssociationExecutionDate, AssociationOverview: { DetailedStatus: detailedStatus, InstanceAssociationStatusAggregatedCount: instanceAssociationStatusAggregatedCount, } = {}, complianceItems = [], SourceId: sourceId, SourceType: sourceType, } = rawData;
const arn = generateArns_1.ssmManagedInstanceArn({ region, account, name: instanceId });
const mappedComplianceItems = complianceItems.map(complianceItem => {
const { ComplianceType: complianceType, ResourceType: complianceResourceType, ResourceId: resourceId, Id: complianceItemId, Title: title, Status: status, Severity: severity, ExecutionSummary: executionSummary, Details: details, } = complianceItem;
return {
id: sdk_1.generateUniqueId({
arn,
...complianceItem,
}),
complianceItemId,
complianceType,
resourceType: complianceResourceType,
resourceId,
title,
status,
severity,
executionSummary: {
executionTime: executionSummary?.ExecutionTime?.toISOString(),
executionId: executionSummary?.ExecutionId,
executionType: executionSummary?.ExecutionType,
},
details: Object.keys(details ?? {}).map(key => ({
id: sdk_1.generateUniqueId({
arn,
key,
value: details[key],
}),
key,
value: details[key],
})),
};
});
const mappedInstanceAssociationStatusAggregatedCount = Object.keys(instanceAssociationStatusAggregatedCount ?? {}).map(key => ({
id: sdk_1.generateUniqueId({
arn,
key,
value: instanceAssociationStatusAggregatedCount[key],
}),
key,
value: instanceAssociationStatusAggregatedCount[key],
}));
return {
id: arn,
arn,
instanceId,
region,
accountId: account,
pingStatus,
lastPingDateTime: lastPingDateTime?.toISOString(),
agentVersion,
isLatestVersion,
platformType,
platformName,
platformVersion,
activationId,
registrationDate: registrationDate?.toISOString(),
resourceType,
name,
associationStatus,
lastAssociationExecutionDate: lastAssociationExecutionDate?.toISOString(),
lastSuccessfulAssociationExecutionDate: lastSuccessfulAssociationExecutionDate?.toISOString(),
ipAddress,
computerName,
associationOverview: {
detailedStatus,
instanceAssociationStatusAggregatedCount: mappedInstanceAssociationStatusAggregatedCount,
},
complianceItems: mappedComplianceItems,
sourceId,
sourceType,
};
};