mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
* relax kube api data type validation (to allow metrics-server resources) Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com> * removed a few now incorrect tests Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com> * correct PodMetrics kind Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
This commit is contained in:
parent
3e9d8fb476
commit
7488f1a5e9
@ -107,19 +107,6 @@ describe("KubeObject", () => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
type TestCase = [string, any];
|
|
||||||
const tests: TestCase[] = [
|
|
||||||
["metadata.uid", { kind: "", apiVersion: "", metadata: { name: "", resourceVersion: "", selfLink: ""} }],
|
|
||||||
["metadata.name", { kind: "", apiVersion: "", metadata: { uid: "", resourceVersion: "", selfLink: "" } }],
|
|
||||||
["metadata.resourceVersion", { kind: "", apiVersion: "", metadata: { uid: "", name: "", selfLink: "" } }],
|
|
||||||
];
|
|
||||||
|
|
||||||
it.each(tests)("should reject with missing non-top level field: %s", (missingField, input) => {
|
|
||||||
expect(KubeObject.isPartialJsonApiData(input)).toBe(false);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
type TestCase = [string, any];
|
type TestCase = [string, any];
|
||||||
const tests: TestCase[] = [
|
const tests: TestCase[] = [
|
||||||
@ -192,7 +179,6 @@ describe("KubeObject", () => {
|
|||||||
["kind", { apiVersion: "", items: [], metadata: { resourceVersion: "", selfLink: "" } }],
|
["kind", { apiVersion: "", items: [], metadata: { resourceVersion: "", selfLink: "" } }],
|
||||||
["apiVersion", { kind: "", items: [], metadata: { resourceVersion: "", selfLink: "" } }],
|
["apiVersion", { kind: "", items: [], metadata: { resourceVersion: "", selfLink: "" } }],
|
||||||
["metadata", { kind: "", items: [], apiVersion: "" }],
|
["metadata", { kind: "", items: [], apiVersion: "" }],
|
||||||
["metadata.resourceVersion", { kind: "", items: [], apiVersion: "", metadata: { selfLink: "" } }],
|
|
||||||
];
|
];
|
||||||
|
|
||||||
it.each(tests)("should reject with missing: %s", (missingField, input) => {
|
it.each(tests)("should reject with missing: %s", (missingField, input) => {
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { KubeObject } from "../kube-object";
|
|||||||
import { KubeApi } from "../kube-api";
|
import { KubeApi } from "../kube-api";
|
||||||
|
|
||||||
export class PodMetrics extends KubeObject {
|
export class PodMetrics extends KubeObject {
|
||||||
static kind = "Pod";
|
static kind = "PodMetrics";
|
||||||
static namespaced = true;
|
static namespaced = true;
|
||||||
static apiBase = "/apis/metrics.k8s.io/v1beta1/pods";
|
static apiBase = "/apis/metrics.k8s.io/v1beta1/pods";
|
||||||
|
|
||||||
|
|||||||
@ -91,7 +91,7 @@ export class KubeObject implements ItemObject {
|
|||||||
static isKubeJsonApiListMetadata(object: unknown): object is KubeJsonApiListMetadata {
|
static isKubeJsonApiListMetadata(object: unknown): object is KubeJsonApiListMetadata {
|
||||||
return (
|
return (
|
||||||
isObject(object)
|
isObject(object)
|
||||||
&& hasTypedProperty(object, "resourceVersion", isString)
|
&& hasOptionalProperty(object, "resourceVersion", isString)
|
||||||
&& hasOptionalProperty(object, "selfLink", isString)
|
&& hasOptionalProperty(object, "selfLink", isString)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -112,12 +112,28 @@ export class KubeObject implements ItemObject {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static isPartialJsonApiMetadata(object: unknown): object is Partial<KubeJsonApiMetadata> {
|
||||||
|
return (
|
||||||
|
isObject(object)
|
||||||
|
&& hasOptionalProperty(object, "uid", isString)
|
||||||
|
&& hasOptionalProperty(object, "name", isString)
|
||||||
|
&& hasOptionalProperty(object, "resourceVersion", isString)
|
||||||
|
&& hasOptionalProperty(object, "selfLink", isString)
|
||||||
|
&& hasOptionalProperty(object, "namespace", isString)
|
||||||
|
&& hasOptionalProperty(object, "creationTimestamp", isString)
|
||||||
|
&& hasOptionalProperty(object, "continue", isString)
|
||||||
|
&& hasOptionalProperty(object, "finalizers", bindPredicate(isTypedArray, isString))
|
||||||
|
&& hasOptionalProperty(object, "labels", bindPredicate(isRecord, isString, isString))
|
||||||
|
&& hasOptionalProperty(object, "annotations", bindPredicate(isRecord, isString, isString))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
static isPartialJsonApiData(object: unknown): object is Partial<KubeJsonApiData> {
|
static isPartialJsonApiData(object: unknown): object is Partial<KubeJsonApiData> {
|
||||||
return (
|
return (
|
||||||
isObject(object)
|
isObject(object)
|
||||||
&& hasOptionalProperty(object, "kind", isString)
|
&& hasOptionalProperty(object, "kind", isString)
|
||||||
&& hasOptionalProperty(object, "apiVersion", isString)
|
&& hasOptionalProperty(object, "apiVersion", isString)
|
||||||
&& hasOptionalProperty(object, "metadata", KubeObject.isKubeJsonApiMetadata)
|
&& hasOptionalProperty(object, "metadata", KubeObject.isPartialJsonApiMetadata)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user