Files
kuber/lib/kubernetes-object.ts
T

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;
}