From 4cd616bf65b830c9bd07d932cd0e2eb8e9ac9c51 Mon Sep 17 00:00:00 2001 From: Jari Kolehmainen Date: Mon, 13 Apr 2020 18:21:51 +0300 Subject: [PATCH] Fix issues with crd plugins (#243) Signed-off-by: Jari Kolehmainen --- .../client/api/endpoints/cert-manager.api.ts | 6 +++--- .../client/components/+config/config.tsx | 20 +------------------ .../certificate-details.tsx | 2 +- .../certmanager.k8s.io/certificates.tsx | 4 ++-- .../components/+custom-resources/crd.store.ts | 3 --- .../kube-object/kube-object-details.tsx | 2 +- .../client/components/layout/main-layout.tsx | 12 ++--------- .../client/components/layout/sidebar.tsx | 4 ++++ 8 files changed, 14 insertions(+), 39 deletions(-) diff --git a/dashboard/client/api/endpoints/cert-manager.api.ts b/dashboard/client/api/endpoints/cert-manager.api.ts index f3d3408441..bfeb2692cb 100644 --- a/dashboard/client/api/endpoints/cert-manager.api.ts +++ b/dashboard/client/api/endpoints/cert-manager.api.ts @@ -241,21 +241,21 @@ export class ClusterIssuer extends Issuer { export const certificatesApi = new KubeApi({ kind: Certificate.kind, - apiBase: "/apis/certmanager.k8s.io/v1alpha1/certificates", + apiBase: "/apis/cert-manager.io/v1alpha2/certificates", isNamespaced: true, objectConstructor: Certificate, }); export const issuersApi = new KubeApi({ kind: Issuer.kind, - apiBase: "/apis/certmanager.k8s.io/v1alpha1/issuers", + apiBase: "/apis/cert-manager.io/v1alpha2/issuers", isNamespaced: true, objectConstructor: Issuer, }); export const clusterIssuersApi = new KubeApi({ kind: ClusterIssuer.kind, - apiBase: "/apis/certmanager.k8s.io/v1alpha1/clusterissuers", + apiBase: "/apis/cert-manager.io/v1alpha2/clusterissuers", isNamespaced: false, objectConstructor: ClusterIssuer, }); diff --git a/dashboard/client/components/+config/config.tsx b/dashboard/client/components/+config/config.tsx index 27149cc451..935cd9affd 100644 --- a/dashboard/client/components/+config/config.tsx +++ b/dashboard/client/components/+config/config.tsx @@ -39,24 +39,6 @@ export class Config extends React.Component { url: resourceQuotaURL({ query }), path: resourceQuotaRoute.path, }, - { - title: Certificates, - component: Certificates, - url: certificatesURL({ query }), - path: certificatesURL(), - }, - { - title: Issuers, - component: Issuers, - url: issuersURL({ query }), - path: issuersURL(), - }, - { - title: Cluster Issuers, - component: ClusterIssuers, - url: clusterIssuersURL(), - path: clusterIssuersURL(), - }, { title: HPA, component: HorizontalPodAutoscalers, @@ -77,4 +59,4 @@ export class Config extends React.Component { ) } -} \ No newline at end of file +} diff --git a/dashboard/client/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx b/dashboard/client/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx index f7dea85968..3e7a432cb4 100644 --- a/dashboard/client/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx +++ b/dashboard/client/components/+custom-resources/certmanager.k8s.io/certificate-details.tsx @@ -139,4 +139,4 @@ export class CertificateDetails extends React.Component { apiManager.registerViews(certificatesApi, { Details: CertificateDetails -}) \ No newline at end of file +}) diff --git a/dashboard/client/components/+custom-resources/certmanager.k8s.io/certificates.tsx b/dashboard/client/components/+custom-resources/certmanager.k8s.io/certificates.tsx index f198c8fd62..d76082b5de 100644 --- a/dashboard/client/components/+custom-resources/certmanager.k8s.io/certificates.tsx +++ b/dashboard/client/components/+custom-resources/certmanager.k8s.io/certificates.tsx @@ -101,5 +101,5 @@ export function CertificateMenu(props: KubeObjectMenuProps) { apiManager.registerViews(certificatesApi, { List: Certificates, - Menu: CertificateMenu, -}) \ No newline at end of file + Menu: CertificateMenu +}) diff --git a/dashboard/client/components/+custom-resources/crd.store.ts b/dashboard/client/components/+custom-resources/crd.store.ts index 4222f659d0..fbcd2a4ee6 100644 --- a/dashboard/client/components/+custom-resources/crd.store.ts +++ b/dashboard/client/components/+custom-resources/crd.store.ts @@ -14,9 +14,6 @@ export class CRDStore extends KubeObjectStore { constructor() { super(); - // auto-load crd-s for building sub-menus - this.loadAll(); - // auto-init stores for crd-s reaction(() => this.items.toJS(), items => { items.forEach(this.initStore); diff --git a/dashboard/client/components/kube-object/kube-object-details.tsx b/dashboard/client/components/kube-object/kube-object-details.tsx index c209047325..6f1f7fcc08 100644 --- a/dashboard/client/components/kube-object/kube-object-details.tsx +++ b/dashboard/client/components/kube-object/kube-object-details.tsx @@ -69,7 +69,7 @@ export class KubeObjectDetails extends React.Component { const { kind, getName, selfLink } = object; title = `${kind}: ${getName()}`; apiComponents = apiManager.getViews(selfLink); - if (isCrdInstance) { + if (isCrdInstance && !apiComponents.Details) { apiComponents.Details = CrdResourceDetails apiComponents.Menu = CrdResourceMenu } diff --git a/dashboard/client/components/layout/main-layout.tsx b/dashboard/client/components/layout/main-layout.tsx index 4ed81fc8a0..b7908f2eb0 100755 --- a/dashboard/client/components/layout/main-layout.tsx +++ b/dashboard/client/components/layout/main-layout.tsx @@ -4,20 +4,13 @@ import * as React from "react"; import { observable, reaction } from "mobx"; import { disposeOnUnmount, observer } from "mobx-react"; import { matchPath, RouteProps } from "react-router-dom"; -import { Trans } from "@lingui/macro"; -import { createStorage, cssNames, isElectron } from "../../utils"; +import { createStorage, cssNames } from "../../utils"; import { Tab, Tabs } from "../tabs"; -import { Icon } from "../icon"; -import { openUserKubeConfig } from "../kubeconfig-dialog"; import { Sidebar } from "./sidebar"; import { configStore } from "../../config.store"; import { ErrorBoundary } from "../error-boundary"; import { Dock } from "../dock"; -import { MenuItem } from "../menu"; -import { MenuActions } from "../menu/menu-actions"; import { navigate, navigation } from "../../navigation"; -import { i18nStore } from "../../i18n"; -import { Badge } from "../badge"; import { themeStore } from "../../theme.store"; export interface TabRoute extends RouteProps { @@ -54,9 +47,8 @@ export class MainLayout extends React.Component { render() { const { className, contentClass, headerClass, tabs, footer, footerClass, children } = this.props; - const { clusterName, username, lensVersion, kubectlAccess } = configStore.config; + const { clusterName } = configStore.config; const { pathname } = navigation.location; - const { languages, setLocale, activeLang } = i18nStore; return (
diff --git a/dashboard/client/components/layout/sidebar.tsx b/dashboard/client/components/layout/sidebar.tsx index a062066f72..3edc2ffc67 100644 --- a/dashboard/client/components/layout/sidebar.tsx +++ b/dashboard/client/components/layout/sidebar.tsx @@ -42,6 +42,10 @@ interface Props { @observer export class Sidebar extends React.Component { + async componentDidMount() { + if (!crdStore.isLoaded) crdStore.loadAll() + } + renderCustomResources() { return Object.entries(crdStore.groups).map(([group, crds]) => { const submenus = crds.map(crd => {