From 840270622e66bec55ebc35b0ca62f114a74b9d44 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Fri, 12 Nov 2021 16:55:47 -0500 Subject: [PATCH] Fix crash when finding CRD's preferred version Signed-off-by: Sebastian Malton --- src/common/k8s-api/endpoints/crd.api.ts | 6 +----- .../components/+custom-resources/crd-resources.tsx | 9 +++++++++ .../components/item-object-list/item-list-layout.tsx | 3 ++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/common/k8s-api/endpoints/crd.api.ts b/src/common/k8s-api/endpoints/crd.api.ts index 1e9044e31a..4e2244d8a8 100644 --- a/src/common/k8s-api/endpoints/crd.api.ts +++ b/src/common/k8s-api/endpoints/crd.api.ts @@ -153,11 +153,7 @@ export class CustomResourceDefinition extends KubeObject { // Prefer the modern `versions` over the legacy `version` if (this.spec.versions) { for (const version of this.spec.versions) { - /** - * If the version is not served then 404 errors will occur - * We should also prefer the storage version - */ - if (version.served && version.storage) { + if (version.storage) { return version; } } diff --git a/src/renderer/components/+custom-resources/crd-resources.tsx b/src/renderer/components/+custom-resources/crd-resources.tsx index e8f5caa21b..33ad0d8eec 100644 --- a/src/renderer/components/+custom-resources/crd-resources.tsx +++ b/src/renderer/components/+custom-resources/crd-resources.tsx @@ -129,6 +129,15 @@ export class CrdResources extends React.Component { }), crdInstance.getAge(), ]} + renderFailedToLoadDetails={() => { + if (!crd.getPreferedVersion().served) { + return ( +

Prefered version is not served.

+ ); + } + + return undefined; + }} /> ); } diff --git a/src/renderer/components/item-object-list/item-list-layout.tsx b/src/renderer/components/item-object-list/item-list-layout.tsx index d19e9d20c8..438a885020 100644 --- a/src/renderer/components/item-object-list/item-list-layout.tsx +++ b/src/renderer/components/item-object-list/item-list-layout.tsx @@ -97,6 +97,7 @@ export interface ItemListLayoutProps { // other customizeRemoveDialog?: (selectedItems: I[]) => Partial; renderFooter?: (parent: ItemListLayout) => React.ReactNode; + renderFailedToLoadDetails?: () => React.ReactNode; filterCallbacks?: ItemsFilters; } @@ -322,7 +323,7 @@ export class ItemListLayout extends React.ComponentFailed to load items.; + return Failed to load items.{this.props.renderFailedToLoadDetails?.()}; } if (!this.isReady) {