Skip to content

Commit cf042b2

Browse files
committed
feat: add revision param to the monitored meta info
1 parent 84d3f93 commit cf042b2

File tree

10 files changed

+28
-11
lines changed

10 files changed

+28
-11
lines changed

src/kube-scanner/metadata-extractor.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export function buildImageMetadata(
1313
workloadMeta: KubeObjectMetadata,
1414
containerStatuses: V1ContainerStatus[],
1515
): IWorkload[] {
16-
const { kind, objectMeta, specMeta, containers } = workloadMeta;
16+
const { kind, objectMeta, specMeta, containers, revision } = workloadMeta;
1717
const { name, namespace, labels, annotations, uid } = objectMeta;
1818

1919
const containerNameToSpec: {[key: string]: V1Container} = {};
@@ -39,6 +39,7 @@ export function buildImageMetadata(
3939
imageName: containerNameToSpec[containerName].image,
4040
imageId: containerNameToStatus[containerName].imageID,
4141
cluster: currentClusterName,
42+
revision,
4243
} as IWorkload),
4344
);
4445
return images;

src/kube-scanner/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export interface KubeObjectMetadata {
1818
specMeta: V1ObjectMeta;
1919
containers: V1Container[];
2020
ownerRefs: V1OwnerReference[] | undefined;
21+
revision?: number;
2122
}
2223

2324
export interface IK8sClients {

src/kube-scanner/watchers/handlers/daemon-set.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { FALSY_WORKLOAD_NAME_MARKER } from './types';
55

66
export async function daemonSetWatchHandler(daemonSet: V1DaemonSet) {
77
if (!daemonSet.metadata || !daemonSet.spec || !daemonSet.spec.template.metadata ||
8-
!daemonSet.spec.template.spec) {
8+
!daemonSet.spec.template.spec || !daemonSet.status) {
99
// TODO(ivanstanev): possibly log this. It shouldn't happen but we should track it!
1010
return;
1111
}
@@ -18,5 +18,6 @@ export async function daemonSetWatchHandler(daemonSet: V1DaemonSet) {
1818
specMeta: daemonSet.spec.template.metadata,
1919
containers: daemonSet.spec.template.spec.containers,
2020
ownerRefs: daemonSet.metadata.ownerReferences,
21+
revision: daemonSet.status.observedGeneration,
2122
}, workloadName);
2223
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { FALSY_WORKLOAD_NAME_MARKER } from './types';
55

66
export async function deploymentWatchHandler(deployment: V1Deployment) {
77
if (!deployment.metadata || !deployment.spec || !deployment.spec.template.metadata ||
8-
!deployment.spec.template.spec) {
8+
!deployment.spec.template.spec || !deployment.status) {
99
// TODO(ivanstanev): possibly log this. It shouldn't happen but we should track it!
1010
return;
1111
}
@@ -18,5 +18,6 @@ export async function deploymentWatchHandler(deployment: V1Deployment) {
1818
specMeta: deployment.spec.template.metadata,
1919
containers: deployment.spec.template.spec.containers,
2020
ownerRefs: deployment.metadata.ownerReferences,
21+
revision: deployment.status.observedGeneration,
2122
}, workloadName);
2223
}

src/kube-scanner/watchers/handlers/replica-set.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { FALSY_WORKLOAD_NAME_MARKER } from './types';
55

66
export async function replicaSetWatchHandler(replicaSet: V1ReplicaSet) {
77
if (!replicaSet.metadata || !replicaSet.spec || !replicaSet.spec.template ||
8-
!replicaSet.spec.template.metadata || !replicaSet.spec.template.spec) {
8+
!replicaSet.spec.template.metadata || !replicaSet.spec.template.spec || !replicaSet.status) {
99
// TODO(ivanstanev): possibly log this. It shouldn't happen but we should track it!
1010
return;
1111
}
@@ -18,5 +18,6 @@ export async function replicaSetWatchHandler(replicaSet: V1ReplicaSet) {
1818
specMeta: replicaSet.spec.template.metadata,
1919
containers: replicaSet.spec.template.spec.containers,
2020
ownerRefs: replicaSet.metadata.ownerReferences,
21+
revision: replicaSet.status.observedGeneration,
2122
}, workloadName);
2223
}

src/kube-scanner/watchers/handlers/replication-controller.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import { FALSY_WORKLOAD_NAME_MARKER } from './types';
55

66
export async function replicationControllerWatchHandler(replicationController: V1ReplicationController) {
77
if (!replicationController.metadata || !replicationController.spec || !replicationController.spec.template ||
8-
!replicationController.spec.template.metadata || !replicationController.spec.template.spec) {
8+
!replicationController.spec.template.metadata || !replicationController.spec.template.spec ||
9+
!replicationController.status) {
910
// TODO(ivanstanev): possibly log this. It shouldn't happen but we should track it!
1011
return;
1112
}
@@ -18,5 +19,6 @@ export async function replicationControllerWatchHandler(replicationController: V
1819
specMeta: replicationController.spec.template.metadata,
1920
containers: replicationController.spec.template.spec.containers,
2021
ownerRefs: replicationController.metadata.ownerReferences,
22+
revision: replicationController.status.observedGeneration,
2123
}, workloadName);
2224
}

src/kube-scanner/watchers/handlers/stateful-set.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { FALSY_WORKLOAD_NAME_MARKER } from './types';
55

66
export async function statefulSetWatchHandler(statefulSet: V1StatefulSet) {
77
if (!statefulSet.metadata || !statefulSet.spec || !statefulSet.spec.template.metadata ||
8-
!statefulSet.spec.template.spec) {
8+
!statefulSet.spec.template.spec || !statefulSet.status) {
99
// TODO(ivanstanev): possibly log this. It shouldn't happen but we should track it!
1010
return;
1111
}
@@ -18,5 +18,6 @@ export async function statefulSetWatchHandler(statefulSet: V1StatefulSet) {
1818
specMeta: statefulSet.spec.template.metadata,
1919
containers: statefulSet.spec.template.spec.containers,
2020
ownerRefs: statefulSet.metadata.ownerReferences,
21+
revision: statefulSet.status.observedGeneration,
2122
}, workloadName);
2223
}

src/kube-scanner/workload-reader.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const deploymentReader: IWorkloadReaderFunc = async (workloadName, namespace) =>
1313
const deployment = deploymentResult.body;
1414

1515
if (!deployment.metadata || !deployment.spec || !deployment.spec.template.metadata ||
16-
!deployment.spec.template.spec) {
16+
!deployment.spec.template.spec || !deployment.status) {
1717
// TODO(ivanstanev): add logging to know when/if it happens!
1818
return undefined;
1919
}
@@ -24,6 +24,7 @@ const deploymentReader: IWorkloadReaderFunc = async (workloadName, namespace) =>
2424
specMeta: deployment.spec.template.metadata,
2525
containers: deployment.spec.template.spec.containers,
2626
ownerRefs: deployment.metadata.ownerReferences,
27+
revision: deployment.status.observedGeneration,
2728
};
2829
};
2930

@@ -33,7 +34,7 @@ const replicaSetReader: IWorkloadReaderFunc = async (workloadName, namespace) =>
3334
const replicaSet = replicaSetResult.body;
3435

3536
if (!replicaSet.metadata || !replicaSet.spec || !replicaSet.spec.template ||
36-
!replicaSet.spec.template.metadata || !replicaSet.spec.template.spec) {
37+
!replicaSet.spec.template.metadata || !replicaSet.spec.template.spec || !replicaSet.status) {
3738
// TODO(ivanstanev): add logging to know when/if it happens!
3839
return undefined;
3940
}
@@ -44,6 +45,7 @@ const replicaSetReader: IWorkloadReaderFunc = async (workloadName, namespace) =>
4445
specMeta: replicaSet.spec.template.metadata,
4546
containers: replicaSet.spec.template.spec.containers,
4647
ownerRefs: replicaSet.metadata.ownerReferences,
48+
revision: replicaSet.status.observedGeneration,
4749
};
4850
};
4951

@@ -53,7 +55,7 @@ const statefulSetReader: IWorkloadReaderFunc = async (workloadName, namespace) =
5355
const statefulSet = statefulSetResult.body;
5456

5557
if (!statefulSet.metadata || !statefulSet.spec || !statefulSet.spec.template.metadata ||
56-
!statefulSet.spec.template.spec) {
58+
!statefulSet.spec.template.spec || !statefulSet.status) {
5759
// TODO(ivanstanev): add logging to know when/if it happens!
5860
return undefined;
5961
}
@@ -64,6 +66,7 @@ const statefulSetReader: IWorkloadReaderFunc = async (workloadName, namespace) =
6466
specMeta: statefulSet.spec.template.metadata,
6567
containers: statefulSet.spec.template.spec.containers,
6668
ownerRefs: statefulSet.metadata.ownerReferences,
69+
revision: statefulSet.status.observedGeneration,
6770
};
6871
};
6972

@@ -73,7 +76,7 @@ const daemonSetReader: IWorkloadReaderFunc = async (workloadName, namespace) =>
7376
const daemonSet = daemonSetResult.body;
7477

7578
if (!daemonSet.metadata || !daemonSet.spec || !daemonSet.spec.template.spec ||
76-
!daemonSet.spec.template.metadata) {
79+
!daemonSet.spec.template.metadata || !daemonSet.status) {
7780
// TODO(ivanstanev): add logging to know when/if it happens!
7881
return undefined;
7982
}
@@ -84,6 +87,7 @@ const daemonSetReader: IWorkloadReaderFunc = async (workloadName, namespace) =>
8487
specMeta: daemonSet.spec.template.metadata,
8588
containers: daemonSet.spec.template.spec.containers,
8689
ownerRefs: daemonSet.metadata.ownerReferences,
90+
revision: daemonSet.status.observedGeneration,
8791
};
8892
};
8993

@@ -135,7 +139,8 @@ const replicationControllerReader: IWorkloadReaderFunc = async (workloadName, na
135139
const replicationController = replicationControllerResult.body;
136140

137141
if (!replicationController.metadata || !replicationController.spec || !replicationController.spec.template ||
138-
!replicationController.spec.template.metadata || !replicationController.spec.template.spec) {
142+
!replicationController.spec.template.metadata || !replicationController.spec.template.spec ||
143+
!replicationController.status) {
139144
// TODO(ivanstanev): add logging to know when/if it happens!
140145
return undefined;
141146
}
@@ -146,6 +151,7 @@ const replicationControllerReader: IWorkloadReaderFunc = async (workloadName, na
146151
specMeta: replicationController.spec.template.metadata,
147152
containers: replicationController.spec.template.spec.containers,
148153
ownerRefs: replicationController.metadata.ownerReferences,
154+
revision: replicationController.status.observedGeneration,
149155
};
150156
};
151157

src/transmitter/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export interface IWorkload {
3939
labels: StringMap | undefined;
4040
annotations: StringMap | undefined;
4141
uid: string;
42+
revision: number | undefined;
4243
specLabels: StringMap | undefined;
4344
specAnnotations: StringMap | undefined;
4445
containerName: string;

test/unit/transmitter-payload.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ tap.test('constructHomebaseWorkloadPayloads breaks when workloadMetadata is miss
3232
imageName: 'myImage',
3333
imageId: 'does this matter?',
3434
cluster: 'grapefruit',
35+
revision: undefined,
3536
},
3637
];
3738

@@ -62,6 +63,7 @@ tap.test('constructHomebaseWorkloadPayloads happy flow', async (t) => {
6263
imageName: 'myImage:tag',
6364
imageId: 'does this matter?',
6465
cluster: 'grapefruit',
66+
revision: 1,
6567
},
6668
];
6769

0 commit comments

Comments
 (0)