mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
fix: Remove incorrect KubeObject validations
- Default to using the ensured selfLink for ID if UID is not present Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
90c449cc0d
commit
18b89d9a85
@ -25,8 +25,8 @@ export interface KubeJsonApiData<
|
|||||||
Status = unknown,
|
Status = unknown,
|
||||||
Spec = unknown,
|
Spec = unknown,
|
||||||
> {
|
> {
|
||||||
kind: string;
|
readonly kind: string;
|
||||||
apiVersion: string;
|
readonly apiVersion: string;
|
||||||
metadata: Metadata;
|
metadata: Metadata;
|
||||||
status?: Status;
|
status?: Status;
|
||||||
spec?: Spec;
|
spec?: Spec;
|
||||||
@ -227,9 +227,6 @@ export type KubeJsonApiObjectMetadata<Namespaced extends KubeObjectScope = KubeO
|
|||||||
export type KubeObjectMetadata<Namespaced extends KubeObjectScope = KubeObjectScope> =
|
export type KubeObjectMetadata<Namespaced extends KubeObjectScope = KubeObjectScope> =
|
||||||
KubeJsonApiObjectMetadata<Namespaced> & {
|
KubeJsonApiObjectMetadata<Namespaced> & {
|
||||||
readonly selfLink: string;
|
readonly selfLink: string;
|
||||||
readonly uid: string;
|
|
||||||
readonly name: string;
|
|
||||||
readonly resourceVersion: string;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export type NamespaceScopedMetadata = KubeObjectMetadata<KubeObjectScope.Namespace>;
|
export type NamespaceScopedMetadata = KubeObjectMetadata<KubeObjectScope.Namespace>;
|
||||||
|
|||||||
116
packages/kube-object/src/kube-object.test.ts
Normal file
116
packages/kube-object/src/kube-object.test.ts
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
import { KubeObject } from "./kube-object";
|
||||||
|
|
||||||
|
describe("kube object tests", () => {
|
||||||
|
it("should allow an object to be created when missing uid", () => {
|
||||||
|
expect(
|
||||||
|
() =>
|
||||||
|
new KubeObject({
|
||||||
|
apiVersion: "metrics.k8s.io/v1beta1",
|
||||||
|
containers: [
|
||||||
|
{
|
||||||
|
name: "cert-manager",
|
||||||
|
usage: {
|
||||||
|
cpu: "472721n",
|
||||||
|
memory: "74404Ki",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
kind: "PodMetrics",
|
||||||
|
metadata: {
|
||||||
|
creationTimestamp: "2023-05-24T14:17:01Z",
|
||||||
|
labels: {
|
||||||
|
app: "cert-manager",
|
||||||
|
"app.kubernetes.io/component": "controller",
|
||||||
|
"app.kubernetes.io/instance": "cert-manager",
|
||||||
|
"app.kubernetes.io/managed-by": "Helm",
|
||||||
|
"app.kubernetes.io/name": "cert-manager",
|
||||||
|
"app.kubernetes.io/version": "v1.5.5",
|
||||||
|
"helm.sh/chart": "cert-manager-v1.5.5",
|
||||||
|
"pod-template-hash": "54cbdfb45c",
|
||||||
|
},
|
||||||
|
name: "cert-manager-54cbdfb45c-n4kp9",
|
||||||
|
namespace: "cert-manager",
|
||||||
|
selfLink: "/apis/metrics.k8s.io/v1beta1/namespaces/cert-manager/pods/cert-manager-54cbdfb45c-n4kp9",
|
||||||
|
resourceVersion: "123",
|
||||||
|
},
|
||||||
|
timestamp: "2023-05-24T14:16:39Z",
|
||||||
|
window: "16s",
|
||||||
|
}),
|
||||||
|
).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should allow an object to be created when missing resourceVersion", () => {
|
||||||
|
expect(
|
||||||
|
() =>
|
||||||
|
new KubeObject({
|
||||||
|
apiVersion: "metrics.k8s.io/v1beta1",
|
||||||
|
containers: [
|
||||||
|
{
|
||||||
|
name: "cert-manager",
|
||||||
|
usage: {
|
||||||
|
cpu: "472721n",
|
||||||
|
memory: "74404Ki",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
kind: "PodMetrics",
|
||||||
|
metadata: {
|
||||||
|
creationTimestamp: "2023-05-24T14:17:01Z",
|
||||||
|
labels: {
|
||||||
|
app: "cert-manager",
|
||||||
|
"app.kubernetes.io/component": "controller",
|
||||||
|
"app.kubernetes.io/instance": "cert-manager",
|
||||||
|
"app.kubernetes.io/managed-by": "Helm",
|
||||||
|
"app.kubernetes.io/name": "cert-manager",
|
||||||
|
"app.kubernetes.io/version": "v1.5.5",
|
||||||
|
"helm.sh/chart": "cert-manager-v1.5.5",
|
||||||
|
"pod-template-hash": "54cbdfb45c",
|
||||||
|
},
|
||||||
|
name: "cert-manager-54cbdfb45c-n4kp9",
|
||||||
|
namespace: "cert-manager",
|
||||||
|
selfLink: "/apis/metrics.k8s.io/v1beta1/namespaces/cert-manager/pods/cert-manager-54cbdfb45c-n4kp9",
|
||||||
|
uid: "123",
|
||||||
|
},
|
||||||
|
timestamp: "2023-05-24T14:16:39Z",
|
||||||
|
window: "16s",
|
||||||
|
}),
|
||||||
|
).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should allow an object to be created when missing resourceVersion and uid", () => {
|
||||||
|
expect(
|
||||||
|
() =>
|
||||||
|
new KubeObject({
|
||||||
|
apiVersion: "metrics.k8s.io/v1beta1",
|
||||||
|
containers: [
|
||||||
|
{
|
||||||
|
name: "cert-manager",
|
||||||
|
usage: {
|
||||||
|
cpu: "472721n",
|
||||||
|
memory: "74404Ki",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
kind: "PodMetrics",
|
||||||
|
metadata: {
|
||||||
|
creationTimestamp: "2023-05-24T14:17:01Z",
|
||||||
|
labels: {
|
||||||
|
app: "cert-manager",
|
||||||
|
"app.kubernetes.io/component": "controller",
|
||||||
|
"app.kubernetes.io/instance": "cert-manager",
|
||||||
|
"app.kubernetes.io/managed-by": "Helm",
|
||||||
|
"app.kubernetes.io/name": "cert-manager",
|
||||||
|
"app.kubernetes.io/version": "v1.5.5",
|
||||||
|
"helm.sh/chart": "cert-manager-v1.5.5",
|
||||||
|
"pod-template-hash": "54cbdfb45c",
|
||||||
|
},
|
||||||
|
name: "cert-manager-54cbdfb45c-n4kp9",
|
||||||
|
namespace: "cert-manager",
|
||||||
|
selfLink: "/apis/metrics.k8s.io/v1beta1/namespaces/cert-manager/pods/cert-manager-54cbdfb45c-n4kp9",
|
||||||
|
},
|
||||||
|
timestamp: "2023-05-24T14:16:39Z",
|
||||||
|
window: "16s",
|
||||||
|
}),
|
||||||
|
).not.toThrow();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -111,20 +111,6 @@ export class KubeObject<
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isString(data.metadata.uid)) {
|
|
||||||
throw new KubeCreationError(
|
|
||||||
`Cannot create a KubeObject from an object without metadata.uid being a string`,
|
|
||||||
data,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isString(data.metadata.resourceVersion)) {
|
|
||||||
throw new KubeCreationError(
|
|
||||||
`Cannot create a KubeObject from an object without metadata.resourceVersion being a string`,
|
|
||||||
data,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isString(data.metadata.selfLink)) {
|
if (!isString(data.metadata.selfLink)) {
|
||||||
throw new KubeCreationError(
|
throw new KubeCreationError(
|
||||||
`Cannot create a KubeObject from an object without metadata.selfLink being a string`,
|
`Cannot create a KubeObject from an object without metadata.selfLink being a string`,
|
||||||
@ -136,23 +122,23 @@ export class KubeObject<
|
|||||||
autoBind(this);
|
autoBind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
get selfLink() {
|
get selfLink(): string {
|
||||||
return this.metadata.selfLink;
|
return this.metadata.selfLink;
|
||||||
}
|
}
|
||||||
|
|
||||||
getId() {
|
getId(): string {
|
||||||
return this.metadata.uid;
|
return this.metadata.uid ?? this.metadata.selfLink;
|
||||||
}
|
}
|
||||||
|
|
||||||
getResourceVersion() {
|
getResourceVersion(): string {
|
||||||
return this.metadata.resourceVersion;
|
return this.metadata.resourceVersion ?? "";
|
||||||
}
|
}
|
||||||
|
|
||||||
getScopedName() {
|
getScopedName() {
|
||||||
return [this.getNs(), this.getName()].filter(Boolean).join("/");
|
return [this.getNs(), this.getName()].filter(Boolean).join("/");
|
||||||
}
|
}
|
||||||
|
|
||||||
getName() {
|
getName(): string {
|
||||||
return this.metadata.name;
|
return this.metadata.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user