@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
156 lines (155 loc) • 7.49 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const sdk_1 = require("@cloudgraph/sdk");
const format_1 = require("../../utils/format");
/**
* ElasticSearchDomain
*/
exports.default = ({ account, service: rawData, region, }) => {
const { DomainName: domainName, ARN: arn, DomainId: id, Created: created, Deleted: deleted, Endpoint: endpoint, Endpoints: endpoints, Processing: processing, UpgradeProcessing: upgradeProcessing, ElasticsearchVersion: elasticSearchVersion, ElasticsearchClusterConfig: elasticSearchClusterconfig, EBSOptions: ebsOptions, AccessPolicies: accessPolicies, SnapshotOptions: snapshotOptions, VPCOptions: vpcOptions, CognitoOptions: cognitoOptions, EncryptionAtRestOptions: encryptionAtRestOptions, NodeToNodeEncryptionOptions: nodeToNodeEncryptionOptions, AdvancedOptions: advancedOptions, LogPublishingOptions: logPublishingOptions, ServiceSoftwareOptions: serviceSoftwareOptions, DomainEndpointOptions: domainEndpointOptions, AdvancedSecurityOptions: advancedSecurityOptions, AutoTuneOptions: autoTuneOptions, ChangeProgressDetails: changeProcessDetails, Tags: tags, } = rawData;
const mappedEndpoints = Object.keys(endpoints ?? {}).map(key => ({
id: sdk_1.generateUniqueId({
arn,
key,
value: endpoints[key],
}),
key,
value: endpoints[key],
}));
const formattedElasticSearchClusterConfig = {
instanceType: elasticSearchClusterconfig?.InstanceType,
instanceCount: elasticSearchClusterconfig?.InstanceCount,
dedicatedMasterEnabled: elasticSearchClusterconfig?.DedicatedMasterEnabled,
dedicatedMasterCount: elasticSearchClusterconfig?.DedicatedMasterCount,
zoneAwarenessEnabled: elasticSearchClusterconfig?.ZoneAwarenessEnabled,
zoneAwarenessConfig: {
availabilityZoneCount: elasticSearchClusterconfig?.ZoneAwarenessConfig?.AvailabilityZoneCount,
},
dedicatedMasterType: elasticSearchClusterconfig?.DedicatedMasterType,
warmEnabled: elasticSearchClusterconfig?.WarmEnabled,
warmType: elasticSearchClusterconfig?.WarmType,
warmCount: elasticSearchClusterconfig?.WarmCount,
coldStorageOptions: {
enabled: elasticSearchClusterconfig?.ColdStorageOptions?.Enabled,
},
};
const formattedEbsOptions = {
ebsEnabled: ebsOptions?.EBSEnabled,
volumeType: ebsOptions?.VolumeType,
volumeSize: ebsOptions?.VolumeSize,
iops: ebsOptions?.Iops,
};
const formattedSnapshotOptions = {
automatedSnapshotStartHour: snapshotOptions?.AutomatedSnapshotStartHour,
};
const formattedVpcOptions = {
vpcId: vpcOptions?.VPCId,
subnetIds: vpcOptions?.SubnetIds,
availabilityZones: vpcOptions?.AvailabilityZones,
securityGroupIds: vpcOptions?.SecurityGroupIds,
};
const formattedCognioOptions = {
enabled: cognitoOptions?.Enabled,
userPoolId: cognitoOptions?.UserPoolId,
identityPoolId: cognitoOptions?.IdentityPoolId,
roleArn: cognitoOptions?.RoleArn,
};
const formattedEncryptionAtRestOptions = {
enabled: encryptionAtRestOptions?.Enabled,
kmsKeyId: encryptionAtRestOptions?.KmsKeyId,
};
const formattedNodeToNodeEncryptionOptions = {
enabled: nodeToNodeEncryptionOptions?.Enabled,
};
const mappedAdvancedOptions = Object.keys(advancedOptions ?? {}).map(key => ({
id: sdk_1.generateUniqueId({
arn,
key,
value: advancedOptions[key],
}),
key,
value: advancedOptions[key],
}));
const mappedLogPublishingOptions = Object.keys(logPublishingOptions ?? {}).map(key => ({
id: sdk_1.generateUniqueId({
arn,
key,
...logPublishingOptions[key],
}),
key,
enabled: logPublishingOptions[key]?.Enabled,
cloudWatchLogsLogGroupArn: logPublishingOptions[key]?.CloudWatchLogsLogGroupArn,
}));
const formattedServiceSoftwareOptions = {
currentVersion: serviceSoftwareOptions?.CurrentVersion,
newVersion: serviceSoftwareOptions?.NewVersion,
updateAvailable: serviceSoftwareOptions?.UpdateAvailable,
cancellable: serviceSoftwareOptions?.Cancellable,
updateStatus: serviceSoftwareOptions?.UpdateStatus,
description: serviceSoftwareOptions?.Description,
automatedUpdateDate: serviceSoftwareOptions?.AutomatedUpdateDate?.toISOString(),
optionalDeployment: serviceSoftwareOptions?.OptionalDeployment,
};
const formattedDomainEndpointOptions = {
enforceHttps: domainEndpointOptions?.EnforceHTTPS,
tlsSecurityPolicy: domainEndpointOptions?.TLSSecurityPolicy,
customEndpointEnabled: domainEndpointOptions?.CustomEndpointEnabled,
customEndpoint: domainEndpointOptions?.CustomEndpoint,
customEndpointCertificateArn: domainEndpointOptions?.CustomEndpointCertificateArn,
};
const formattedAdvancedSecurityOptions = {
enabled: advancedSecurityOptions?.Enabled,
internalUserDatabaseEnabled: advancedSecurityOptions?.InternalUserDatabaseEnabled,
samlOptions: {
enabled: advancedSecurityOptions?.SAMLOptions?.Enabled,
idp: {
metadataContent: advancedSecurityOptions?.SAMLOptions?.Idp?.MetadataContent,
entityId: advancedSecurityOptions?.SAMLOptions?.Idp?.EntityId,
},
subjectKey: advancedSecurityOptions?.SAMLOptions?.SubjectKey,
rolesKey: advancedSecurityOptions?.SAMLOptions?.RolesKey,
sessionTimeoutMinutes: advancedSecurityOptions?.SAMLOptions?.SessionTimeoutMinutes,
},
anonymousAuthDisableDate: advancedSecurityOptions?.AnonymousAuthDisableDate?.toISOString(),
anonymousAuthEnabled: advancedSecurityOptions?.AnonymousAuthEnabled,
};
const formattedAutoTuneOptions = {
state: autoTuneOptions?.State,
errorMessage: autoTuneOptions?.ErrorMessage,
};
const formattedChangeProgressDetails = {
changeId: changeProcessDetails?.ChangeId,
message: changeProcessDetails?.Message,
};
return {
id,
arn,
region,
accountId: account,
created,
deleted,
endpoint,
processing,
upgradeProcessing,
elasticSearchVersion,
rawPolicy: accessPolicies,
accessPolicies: format_1.formatIamJsonPolicy(accessPolicies),
domainName,
endpoints: mappedEndpoints,
elasticSearchClusterConfig: formattedElasticSearchClusterConfig,
ebsOptions: formattedEbsOptions,
snapshotOptions: formattedSnapshotOptions,
vpcOptions: formattedVpcOptions,
cognitoOptions: formattedCognioOptions,
encryptionAtRestOptions: formattedEncryptionAtRestOptions,
nodeToNodeEncryptionOptions: formattedNodeToNodeEncryptionOptions,
advancedOptions: mappedAdvancedOptions,
logPublishingOptions: mappedLogPublishingOptions,
serviceSoftwareOptions: formattedServiceSoftwareOptions,
domainEndpointOptions: formattedDomainEndpointOptions,
advancedSecurityOptions: formattedAdvancedSecurityOptions,
autoTuneOptions: formattedAutoTuneOptions,
changeProcessDetails: formattedChangeProgressDetails,
tags: format_1.formatTagsFromMap(tags ?? {}),
};
};