1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Fix issues with crd plugins (#243)

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
Jari Kolehmainen 2020-04-13 18:21:51 +03:00 committed by GitHub
parent 298636b8f1
commit 4cd616bf65
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 14 additions and 39 deletions

View File

@ -241,21 +241,21 @@ export class ClusterIssuer extends Issuer {
export const certificatesApi = new KubeApi({ export const certificatesApi = new KubeApi({
kind: Certificate.kind, kind: Certificate.kind,
apiBase: "/apis/certmanager.k8s.io/v1alpha1/certificates", apiBase: "/apis/cert-manager.io/v1alpha2/certificates",
isNamespaced: true, isNamespaced: true,
objectConstructor: Certificate, objectConstructor: Certificate,
}); });
export const issuersApi = new KubeApi({ export const issuersApi = new KubeApi({
kind: Issuer.kind, kind: Issuer.kind,
apiBase: "/apis/certmanager.k8s.io/v1alpha1/issuers", apiBase: "/apis/cert-manager.io/v1alpha2/issuers",
isNamespaced: true, isNamespaced: true,
objectConstructor: Issuer, objectConstructor: Issuer,
}); });
export const clusterIssuersApi = new KubeApi({ export const clusterIssuersApi = new KubeApi({
kind: ClusterIssuer.kind, kind: ClusterIssuer.kind,
apiBase: "/apis/certmanager.k8s.io/v1alpha1/clusterissuers", apiBase: "/apis/cert-manager.io/v1alpha2/clusterissuers",
isNamespaced: false, isNamespaced: false,
objectConstructor: ClusterIssuer, objectConstructor: ClusterIssuer,
}); });

View File

@ -39,24 +39,6 @@ export class Config extends React.Component {
url: resourceQuotaURL({ query }), url: resourceQuotaURL({ query }),
path: resourceQuotaRoute.path, path: resourceQuotaRoute.path,
}, },
{
title: <Trans>Certificates</Trans>,
component: Certificates,
url: certificatesURL({ query }),
path: certificatesURL(),
},
{
title: <Trans>Issuers</Trans>,
component: Issuers,
url: issuersURL({ query }),
path: issuersURL(),
},
{
title: <Trans>Cluster Issuers</Trans>,
component: ClusterIssuers,
url: clusterIssuersURL(),
path: clusterIssuersURL(),
},
{ {
title: <Trans>HPA</Trans>, title: <Trans>HPA</Trans>,
component: HorizontalPodAutoscalers, component: HorizontalPodAutoscalers,

View File

@ -101,5 +101,5 @@ export function CertificateMenu(props: KubeObjectMenuProps<Certificate>) {
apiManager.registerViews(certificatesApi, { apiManager.registerViews(certificatesApi, {
List: Certificates, List: Certificates,
Menu: CertificateMenu, Menu: CertificateMenu
}) })

View File

@ -14,9 +14,6 @@ export class CRDStore extends KubeObjectStore<CustomResourceDefinition> {
constructor() { constructor() {
super(); super();
// auto-load crd-s for building sub-menus
this.loadAll();
// auto-init stores for crd-s // auto-init stores for crd-s
reaction(() => this.items.toJS(), items => { reaction(() => this.items.toJS(), items => {
items.forEach(this.initStore); items.forEach(this.initStore);

View File

@ -69,7 +69,7 @@ export class KubeObjectDetails extends React.Component {
const { kind, getName, selfLink } = object; const { kind, getName, selfLink } = object;
title = `${kind}: ${getName()}`; title = `${kind}: ${getName()}`;
apiComponents = apiManager.getViews(selfLink); apiComponents = apiManager.getViews(selfLink);
if (isCrdInstance) { if (isCrdInstance && !apiComponents.Details) {
apiComponents.Details = CrdResourceDetails apiComponents.Details = CrdResourceDetails
apiComponents.Menu = CrdResourceMenu apiComponents.Menu = CrdResourceMenu
} }

View File

@ -4,20 +4,13 @@ import * as React from "react";
import { observable, reaction } from "mobx"; import { observable, reaction } from "mobx";
import { disposeOnUnmount, observer } from "mobx-react"; import { disposeOnUnmount, observer } from "mobx-react";
import { matchPath, RouteProps } from "react-router-dom"; import { matchPath, RouteProps } from "react-router-dom";
import { Trans } from "@lingui/macro"; import { createStorage, cssNames } from "../../utils";
import { createStorage, cssNames, isElectron } from "../../utils";
import { Tab, Tabs } from "../tabs"; import { Tab, Tabs } from "../tabs";
import { Icon } from "../icon";
import { openUserKubeConfig } from "../kubeconfig-dialog";
import { Sidebar } from "./sidebar"; import { Sidebar } from "./sidebar";
import { configStore } from "../../config.store"; import { configStore } from "../../config.store";
import { ErrorBoundary } from "../error-boundary"; import { ErrorBoundary } from "../error-boundary";
import { Dock } from "../dock"; import { Dock } from "../dock";
import { MenuItem } from "../menu";
import { MenuActions } from "../menu/menu-actions";
import { navigate, navigation } from "../../navigation"; import { navigate, navigation } from "../../navigation";
import { i18nStore } from "../../i18n";
import { Badge } from "../badge";
import { themeStore } from "../../theme.store"; import { themeStore } from "../../theme.store";
export interface TabRoute extends RouteProps { export interface TabRoute extends RouteProps {
@ -54,9 +47,8 @@ export class MainLayout extends React.Component<Props> {
render() { render() {
const { className, contentClass, headerClass, tabs, footer, footerClass, children } = this.props; 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 { pathname } = navigation.location;
const { languages, setLocale, activeLang } = i18nStore;
return ( return (
<div className={cssNames("MainLayout", className, themeStore.activeTheme.type)}> <div className={cssNames("MainLayout", className, themeStore.activeTheme.type)}>
<header className={cssNames("flex gaps align-center", headerClass)}> <header className={cssNames("flex gaps align-center", headerClass)}>

View File

@ -42,6 +42,10 @@ interface Props {
@observer @observer
export class Sidebar extends React.Component<Props> { export class Sidebar extends React.Component<Props> {
async componentDidMount() {
if (!crdStore.isLoaded) crdStore.loadAll()
}
renderCustomResources() { renderCustomResources() {
return Object.entries(crdStore.groups).map(([group, crds]) => { return Object.entries(crdStore.groups).map(([group, crds]) => {
const submenus = crds.map(crd => { const submenus = crds.map(crd => {