diff --git a/src/renderer/api/endpoints/crd.api.ts b/src/renderer/api/endpoints/crd.api.ts index 39a4e50f8c..829719a3cb 100644 --- a/src/renderer/api/endpoints/crd.api.ts +++ b/src/renderer/api/endpoints/crd.api.ts @@ -130,9 +130,16 @@ export class CustomResourceDefinition extends KubeObject { } } -export const crdApi = new KubeApi({ +export const crdBetaApi = new KubeApi({ kind: CustomResourceDefinition.kind, apiBase: "/apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions", isNamespaced: false, objectConstructor: CustomResourceDefinition, }); + +export const crdApi = new KubeApi({ + kind: CustomResourceDefinition.kind, + apiBase: "/apis/apiextensions.k8s.io/v1/customresourcedefinitions", + isNamespaced: false, + objectConstructor: CustomResourceDefinition, +}); diff --git a/src/renderer/components/+custom-resources/crd.store.ts b/src/renderer/components/+custom-resources/crd.store.ts index fbcd2a4ee6..fadb1222e2 100644 --- a/src/renderer/components/+custom-resources/crd.store.ts +++ b/src/renderer/components/+custom-resources/crd.store.ts @@ -7,6 +7,17 @@ import { KubeApi } from "../../api/kube-api"; import { CRDResourceStore } from "./crd-resource.store"; import { KubeObject } from "../../api/kube-object"; +function initStore(crd: CustomResourceDefinition) { + const apiBase = crd.getResourceApiBase(); + const kind = crd.getResourceKind(); + const isNamespaced = crd.isNamespaced(); + const api = apiManager.getApi(apiBase) || new KubeApi({ apiBase, kind, isNamespaced }); + + if (!apiManager.getStore(api)) { + apiManager.registerStore(api, new CRDResourceStore(api)); + } +} + @autobind() export class CRDStore extends KubeObjectStore { api = crdApi @@ -15,9 +26,7 @@ export class CRDStore extends KubeObjectStore { super(); // auto-init stores for crd-s - reaction(() => this.items.toJS(), items => { - items.forEach(this.initStore); - }) + reaction(() => this.items.toJS(), items => items.forEach(initStore)) } protected sortItems(items: CustomResourceDefinition[]) { @@ -27,23 +36,6 @@ export class CRDStore extends KubeObjectStore { ]) } - protected initStore(crd: CustomResourceDefinition) { - const apiBase = crd.getResourceApiBase(); - let api = apiManager.getApi(apiBase); - if (!api) { - api = new KubeApi({ - apiBase: apiBase, - kind: crd.getResourceKind(), - isNamespaced: crd.isNamespaced(), - }); - } - let store = apiManager.getStore(api); - if (!store) { - store = new CRDResourceStore(api); - apiManager.registerStore(api, store); - } - } - @computed get groups() { const groups: Record = {}; return this.items.reduce((groups, crd) => { @@ -63,9 +55,10 @@ export class CRDStore extends KubeObjectStore { getByObject(obj: KubeObject) { if (!obj) return null const { kind, apiVersion } = obj; - return this.items.find(crd => { - return kind === crd.getResourceKind() && apiVersion === `${crd.getGroup()}/${crd.getVersion()}` - }) + + return this.items.find(crd => ( + kind === crd.getResourceKind() && apiVersion === `${crd.getGroup()}/${crd.getVersion()}` + )) } }