27 lines
815 B
TypeScript
27 lines
815 B
TypeScript
import type { KubernetesObject } from "@kubernetes/client-node";
|
|
|
|
type KubernetesObjectWithStatus = KubernetesObject & { status?: unknown };
|
|
|
|
/** Returns an apply-safe copy without fields owned by the API server. */
|
|
export function sanitizeKubernetesObject<T extends KubernetesObject>(
|
|
resource: T,
|
|
): T {
|
|
const { status: _status, ...object } = resource as KubernetesObjectWithStatus;
|
|
const {
|
|
managedFields: _managedFields,
|
|
resourceVersion: _resourceVersion,
|
|
uid: _uid,
|
|
creationTimestamp: _creationTimestamp,
|
|
generation: _generation,
|
|
selfLink: _selfLink,
|
|
deletionTimestamp: _deletionTimestamp,
|
|
deletionGracePeriodSeconds: _deletionGracePeriodSeconds,
|
|
...metadata
|
|
} = object.metadata ?? {};
|
|
|
|
return {
|
|
...object,
|
|
...(object.metadata && { metadata }),
|
|
} as T;
|
|
}
|