Skip to content

Commit d5753b4

Browse files
authored
Merge pull request #98 from snyk/fix/log-workload-name
fix: log workload name instead of random log ID
2 parents cd59935 + 37c1124 commit d5753b4

File tree

11 files changed

+47
-45
lines changed

11 files changed

+47
-45
lines changed

src/kube-scanner/index.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,28 @@ import { constructHomebaseDeleteWorkloadPayload, constructHomebaseWorkloadPayloa
1313
import { IDepGraphPayload, IKubeImage, ILocalWorkloadLocator } from '../transmitter/types';
1414

1515
export = class WorkloadWorker {
16-
private readonly logId: string;
16+
private readonly name: string;
1717

18-
constructor(logId: string) {
19-
this.logId = logId;
18+
constructor(name: string) {
19+
this.name = name;
2020
}
2121

2222
public async process(workloadMetadata: IKubeImage[]) {
23-
const logId = this.logId;
23+
const workloadName = this.name;
2424
const allImages = workloadMetadata.map((meta) => meta.imageName);
25-
logger.info({logId, imageCount: allImages.length}, 'Queried workloads');
25+
logger.info({workloadName, imageCount: allImages.length}, 'Queried workloads');
2626
const uniqueImages = [...new Set<string>(allImages)];
2727

28-
logger.info({logId, imageCount: uniqueImages.length}, 'Pulling unique images');
28+
logger.info({workloadName, imageCount: uniqueImages.length}, 'Pulling unique images');
2929
const pulledImages = await pullImages(uniqueImages);
3030
if (pulledImages.length === 0) {
3131
logger.info({}, 'No images were pulled, halting scanner process.');
3232
return;
3333
}
3434

35-
logger.info({logId, imageCount: pulledImages.length}, 'Scanning pulled images');
35+
logger.info({workloadName, imageCount: pulledImages.length}, 'Scanning pulled images');
3636
const scannedImages: ScanResult[] = await scanImages(pulledImages);
37-
logger.info({logId, imageCount: scannedImages.length}, 'Successfully scanned images');
37+
logger.info({workloadName, imageCount: scannedImages.length}, 'Successfully scanned images');
3838
if (scannedImages.length === 0) {
3939
logger.info({}, 'No images were scanned, halting scanner process.');
4040
return;
@@ -46,12 +46,12 @@ export = class WorkloadWorker {
4646
const pulledImageMetadata = workloadMetadata.filter((meta) =>
4747
pulledImages.includes(meta.imageName));
4848

49-
logger.info({logId, imageCount: pulledImageMetadata.length}, 'Processed images');
49+
logger.info({workloadName, imageCount: pulledImageMetadata.length}, 'Processed images');
5050
}
5151

5252
public async delete(localWorkloadLocator: ILocalWorkloadLocator) {
5353
const deletePayload = constructHomebaseDeleteWorkloadPayload(localWorkloadLocator);
54-
logger.info({logId: this.logId, workload: localWorkloadLocator},
54+
logger.info({workloadName: this.name, workload: localWorkloadLocator},
5555
'Removing workloads from homebase');
5656
await deleteHomebaseWorkload(deletePayload);
5757
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
import { V1beta1CronJob } from '@kubernetes/client-node';
2-
import * as uuidv4 from 'uuid/v4';
32
import { WatchEventType } from '../types';
43
import { deleteWorkload } from './index';
54
import { WorkloadKind } from '../../types';
5+
import { FALSY_WORKLOAD_NAME_MARKER } from './types';
66

77
export async function cronJobWatchHandler(eventType: string, cronJob: V1beta1CronJob) {
88
if (eventType !== WatchEventType.Deleted) {
99
return;
1010
}
1111

12-
const logId = uuidv4().substring(0, 8);
13-
1412
if (!cronJob.metadata || !cronJob.spec || !cronJob.spec.jobTemplate.spec ||
1513
!cronJob.spec.jobTemplate.metadata || !cronJob.spec.jobTemplate.spec.template.spec) {
1614
// TODO(ivanstanev): possibly log this. It shouldn't happen but we should track it!
1715
return;
1816
}
1917

18+
const workloadName = cronJob.metadata.name || FALSY_WORKLOAD_NAME_MARKER;
19+
2020
await deleteWorkload({
2121
kind: WorkloadKind.CronJob,
2222
objectMeta: cronJob.metadata,
2323
specMeta: cronJob.spec.jobTemplate.metadata,
2424
containers: cronJob.spec.jobTemplate.spec.template.spec.containers,
2525
ownerRefs: cronJob.metadata.ownerReferences,
26-
}, logId);
26+
}, workloadName);
2727
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
import { V1DaemonSet } from '@kubernetes/client-node';
2-
import * as uuidv4 from 'uuid/v4';
32
import { WatchEventType } from '../types';
43
import { deleteWorkload } from './index';
54
import { WorkloadKind } from '../../types';
5+
import { FALSY_WORKLOAD_NAME_MARKER } from './types';
66

77
export async function daemonSetWatchHandler(eventType: string, daemonSet: V1DaemonSet) {
88
if (eventType !== WatchEventType.Deleted) {
99
return;
1010
}
1111

12-
const logId = uuidv4().substring(0, 8);
13-
1412
if (!daemonSet.metadata || !daemonSet.spec || !daemonSet.spec.template.metadata ||
1513
!daemonSet.spec.template.spec) {
1614
// TODO(ivanstanev): possibly log this. It shouldn't happen but we should track it!
1715
return;
1816
}
1917

18+
const workloadName = daemonSet.metadata.name || FALSY_WORKLOAD_NAME_MARKER;
19+
2020
await deleteWorkload({
2121
kind: WorkloadKind.DaemonSet,
2222
objectMeta: daemonSet.metadata,
2323
specMeta: daemonSet.spec.template.metadata,
2424
containers: daemonSet.spec.template.spec.containers,
2525
ownerRefs: daemonSet.metadata.ownerReferences,
26-
}, logId);
26+
}, workloadName);
2727
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
import { V1Deployment } from '@kubernetes/client-node';
2-
import * as uuidv4 from 'uuid/v4';
32
import { WatchEventType } from '../types';
43
import { deleteWorkload } from './index';
54
import { WorkloadKind } from '../../types';
5+
import { FALSY_WORKLOAD_NAME_MARKER } from './types';
66

77
export async function deploymentWatchHandler(eventType: string, deployment: V1Deployment) {
88
if (eventType !== WatchEventType.Deleted) {
99
return;
1010
}
1111

12-
const logId = uuidv4().substring(0, 8);
13-
1412
if (!deployment.metadata || !deployment.spec || !deployment.spec.template.metadata ||
1513
!deployment.spec.template.spec) {
1614
// TODO(ivanstanev): possibly log this. It shouldn't happen but we should track it!
1715
return;
1816
}
1917

18+
const workloadName = deployment.metadata.name || FALSY_WORKLOAD_NAME_MARKER;
19+
2020
await deleteWorkload({
2121
kind: WorkloadKind.Deployment,
2222
objectMeta: deployment.metadata,
2323
specMeta: deployment.spec.template.metadata,
2424
containers: deployment.spec.template.spec.containers,
2525
ownerRefs: deployment.metadata.ownerReferences,
26-
}, logId);
26+
}, workloadName);
2727
}

src/kube-scanner/watchers/handlers/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import WorkloadWorker = require('../../../kube-scanner');
33
import { buildWorkloadMetadata } from '../../metadata-extractor';
44
import { KubeObjectMetadata } from '../../types';
55

6-
export async function deleteWorkload(kubernetesMetadata: KubeObjectMetadata, logId: string) {
6+
export async function deleteWorkload(kubernetesMetadata: KubeObjectMetadata, workloadName: string) {
77
try {
88
if (kubernetesMetadata.ownerRefs !== undefined && kubernetesMetadata.ownerRefs.length > 0) {
99
return;
1010
}
1111

1212
const localWorkloadLocator = buildWorkloadMetadata(kubernetesMetadata);
13-
const workloadWorker = new WorkloadWorker(logId);
13+
const workloadWorker = new WorkloadWorker(workloadName);
1414
await workloadWorker.delete(localWorkloadLocator);
1515
} catch (error) {
1616
logger.error({error, resourceType: kubernetesMetadata.kind, resourceName: kubernetesMetadata.objectMeta.name},
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
import { V1Job } from '@kubernetes/client-node';
2-
import * as uuidv4 from 'uuid/v4';
32
import { WatchEventType } from '../types';
43
import { deleteWorkload } from './index';
54
import { WorkloadKind } from '../../types';
5+
import { FALSY_WORKLOAD_NAME_MARKER } from './types';
66

77
export async function jobWatchHandler(eventType: string, job: V1Job) {
88
if (eventType !== WatchEventType.Deleted) {
99
return;
1010
}
1111

12-
const logId = uuidv4().substring(0, 8);
13-
1412
if (!job.metadata || !job.spec || !job.spec.template.metadata || !job.spec.template.spec) {
1513
// TODO(ivanstanev): possibly log this. It shouldn't happen but we should track it!
1614
return;
1715
}
1816

17+
const workloadName = job.metadata.name || FALSY_WORKLOAD_NAME_MARKER;
18+
1919
await deleteWorkload({
2020
kind: WorkloadKind.Job,
2121
objectMeta: job.metadata,
2222
specMeta: job.spec.template.metadata,
2323
containers: job.spec.template.spec.containers,
2424
ownerRefs: job.metadata.ownerReferences,
25-
}, logId);
25+
}, workloadName);
2626
}

src/kube-scanner/watchers/handlers/pod.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import { V1Pod } from '@kubernetes/client-node';
22
import async = require('async');
3-
import * as uuidv4 from 'uuid/v4';
43
import config = require('../../../common/config');
54
import logger = require('../../../common/logger');
65
import WorkloadWorker = require('../../../kube-scanner');
76
import { IKubeImage } from '../../../transmitter/types';
87
import { buildMetadataForWorkload } from '../../metadata-extractor';
98
import { PodPhase, WatchEventType } from '../types';
109
import state = require('../../../state');
10+
import { FALSY_WORKLOAD_NAME_MARKER } from './types';
1111

1212
async function queueWorker(task, callback) {
1313
const {workloadWorker, workloadMetadata, imageKeys} = task;
@@ -49,17 +49,18 @@ export async function podWatchHandler(eventType: string, pod: V1Pod) {
4949
return;
5050
}
5151

52-
const logId = uuidv4().substring(0, 8);
52+
const podName = pod.metadata && pod.metadata.name ? pod.metadata.name : FALSY_WORKLOAD_NAME_MARKER;
5353

5454
try {
5555
const workloadMetadata = await buildMetadataForWorkload(pod);
5656

5757
if (workloadMetadata === undefined || workloadMetadata.length === 0) {
58-
logger.warn({logId, podName: pod.metadata!.name}, 'Could not process Pod. The workload is possibly unsupported');
58+
logger.warn({podName}, 'Could not process Pod. The workload is possibly unsupported');
5959
return;
6060
}
6161

62-
const workloadWorker = new WorkloadWorker(logId);
62+
const workloadName = workloadMetadata[0].name;
63+
const workloadWorker = new WorkloadWorker(workloadName);
6364

6465
switch (eventType) {
6566
case WatchEventType.Added:
@@ -76,7 +77,7 @@ export async function podWatchHandler(eventType: string, pod: V1Pod) {
7677
break;
7778
}
7879
} catch (error) {
79-
logger.error({error, logId, podName: pod.metadata!.name}, 'Could not build image metadata for pod');
80+
logger.error({error, podName}, 'Could not build image metadata for pod');
8081
}
8182
}
8283

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
import { V1ReplicaSet } from '@kubernetes/client-node';
2-
import * as uuidv4 from 'uuid/v4';
32
import { WatchEventType } from '../types';
43
import { deleteWorkload } from './index';
54
import { WorkloadKind } from '../../types';
5+
import { FALSY_WORKLOAD_NAME_MARKER } from './types';
66

77
export async function replicaSetWatchHandler(eventType: string, replicaSet: V1ReplicaSet) {
88
if (eventType !== WatchEventType.Deleted) {
99
return;
1010
}
1111

12-
const logId = uuidv4().substring(0, 8);
13-
1412
if (!replicaSet.metadata || !replicaSet.spec || !replicaSet.spec.template ||
1513
!replicaSet.spec.template.metadata || !replicaSet.spec.template.spec) {
1614
// TODO(ivanstanev): possibly log this. It shouldn't happen but we should track it!
1715
return;
1816
}
1917

18+
const workloadName = replicaSet.metadata.name || FALSY_WORKLOAD_NAME_MARKER;
19+
2020
await deleteWorkload({
2121
kind: WorkloadKind.ReplicaSet,
2222
objectMeta: replicaSet.metadata,
2323
specMeta: replicaSet.spec.template.metadata,
2424
containers: replicaSet.spec.template.spec.containers,
2525
ownerRefs: replicaSet.metadata.ownerReferences,
26-
}, logId);
26+
}, workloadName);
2727
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
import { V1ReplicationController } from '@kubernetes/client-node';
2-
import * as uuidv4 from 'uuid/v4';
32
import { WatchEventType } from '../types';
43
import { deleteWorkload } from './index';
54
import { WorkloadKind } from '../../types';
5+
import { FALSY_WORKLOAD_NAME_MARKER } from './types';
66

77
export async function replicationControllerWatchHandler(
88
eventType: string, replicationController: V1ReplicationController) {
99
if (eventType !== WatchEventType.Deleted) {
1010
return;
1111
}
1212

13-
const logId = uuidv4().substring(0, 8);
14-
1513
if (!replicationController.metadata || !replicationController.spec || !replicationController.spec.template ||
1614
!replicationController.spec.template.metadata || !replicationController.spec.template.spec) {
1715
// TODO(ivanstanev): possibly log this. It shouldn't happen but we should track it!
1816
return;
1917
}
2018

19+
const workloadName = replicationController.metadata.name || FALSY_WORKLOAD_NAME_MARKER;
20+
2121
await deleteWorkload({
2222
kind: WorkloadKind.ReplicationController,
2323
objectMeta: replicationController.metadata,
2424
specMeta: replicationController.spec.template.metadata,
2525
containers: replicationController.spec.template.spec.containers,
2626
ownerRefs: replicationController.metadata.ownerReferences,
27-
}, logId);
27+
}, workloadName);
2828
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
import { V1StatefulSet } from '@kubernetes/client-node';
2-
import * as uuidv4 from 'uuid/v4';
32
import { WatchEventType } from '../types';
43
import { deleteWorkload } from './index';
54
import { WorkloadKind } from '../../types';
5+
import { FALSY_WORKLOAD_NAME_MARKER } from './types';
66

77
export async function statefulSetWatchHandler(eventType: string, statefulSet: V1StatefulSet) {
88
if (eventType !== WatchEventType.Deleted) {
99
return;
1010
}
1111

12-
const logId = uuidv4().substring(0, 8);
13-
1412
if (!statefulSet.metadata || !statefulSet.spec || !statefulSet.spec.template.metadata ||
1513
!statefulSet.spec.template.spec) {
1614
// TODO(ivanstanev): possibly log this. It shouldn't happen but we should track it!
1715
return;
1816
}
1917

18+
const workloadName = statefulSet.metadata.name || FALSY_WORKLOAD_NAME_MARKER;
19+
2020
await deleteWorkload({
2121
kind: WorkloadKind.StatefulSet,
2222
objectMeta: statefulSet.metadata,
2323
specMeta: statefulSet.spec.template.metadata,
2424
containers: statefulSet.spec.template.spec.containers,
2525
ownerRefs: statefulSet.metadata.ownerReferences,
26-
}, logId);
26+
}, workloadName);
2727
}

0 commit comments

Comments
 (0)