relax kube api data type validation (to allow metrics-server resources)

Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
This commit is contained in:
Jim Ehrismann committed 2021-05-10 18:25:59 -04:00
1 parent db492097f6
commit 1811fc1178
2 files changed
+19 -3

No files matched your search

@@ -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 = "PodMetricsList";
static namespaced = true; static namespaced = true;
static apiBase = "/apis/metrics.k8s.io/v1beta1/pods"; static apiBase = "/apis/metrics.k8s.io/v1beta1/pods";
+18 -2
View File
@@ -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)
); );
} }