diff --git a/package.json b/package.json index c60bb6f..0cba08c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@jupiterone/graph-kubernetes", - "version": "2.3.1", + "version": "2.3.2", "description": "A JupiterOne Integration for Kubernetes", "repository": { "type": "git", diff --git a/src/steps/nodes/index.ts b/src/steps/nodes/index.ts index 70ee958..289fe4d 100644 --- a/src/steps/nodes/index.ts +++ b/src/steps/nodes/index.ts @@ -1,23 +1,37 @@ -import { IntegrationStep } from '@jupiterone/integration-sdk-core'; +import { + IntegrationStep, + IntegrationWarnEventName, +} from '@jupiterone/integration-sdk-core'; import { IntegrationConfig, IntegrationStepContext } from '../../config'; import { Entities, IntegrationSteps } from '../constants'; import { createNodeEntity } from './converters'; import { cacheNodeNameToUid } from '../../util/jobState'; import getOrCreateAPIClient from '../../kubernetes/getOrCreateAPIClient'; +import { V1Node } from '@kubernetes/client-node'; export async function fetchNodes( context: IntegrationStepContext, ): Promise { - const { instance, jobState } = context; + const { instance, jobState, logger } = context; const { config } = instance; + let nodesWithMissingMetadata = 0; const client = getOrCreateAPIClient(config); - await client.iterateNodes(async (node) => { + await client.iterateNodes(async (node: V1Node) => { + if (!node.metadata) { + nodesWithMissingMetadata++; + return; + } const nodeEntity = createNodeEntity(node); await jobState.addEntity(nodeEntity); await cacheNodeNameToUid(jobState, node); }); + + logger.publishWarnEvent({ + name: IntegrationWarnEventName.IngestionLimitEncountered, + description: `Found metadata missing for ${nodesWithMissingMetadata} nodes`, + }); } export const nodeSteps: IntegrationStep[] = [