mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
custom columns for kubernetes cluster catalog category
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
parent
808875f491
commit
9a2958bf39
@ -132,6 +132,14 @@ export class KubernetesCluster<
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
get k8sVersion() {
|
||||
return this.metadata.kubeVersion?.replace("unknown", "") || "";
|
||||
}
|
||||
|
||||
get k8sDistro() {
|
||||
return this.metadata.distro?.replace("unknown", "") || "";
|
||||
}
|
||||
}
|
||||
|
||||
export class KubernetesClusterCategory extends CatalogCategory {
|
||||
|
||||
@ -4,12 +4,10 @@
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { KubernetesClusterCategory } from "../../catalog-entities/kubernetes-cluster";
|
||||
import { builtInCategoryInjectionToken } from "../category-registry.injectable";
|
||||
|
||||
const kubernetesClusterCategoryInjectable = getInjectable({
|
||||
id: "kubernetes-cluster-category",
|
||||
instantiate: () => new KubernetesClusterCategory(),
|
||||
injectionToken: builtInCategoryInjectionToken,
|
||||
});
|
||||
|
||||
export default kubernetesClusterCategoryInjectable;
|
||||
|
||||
10
src/main/catalog-entities/kubernetes-cluster.ts
Normal file
10
src/main/catalog-entities/kubernetes-cluster.ts
Normal file
@ -0,0 +1,10 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
|
||||
import { KubernetesClusterCategory } from "../../common/catalog-entities/kubernetes-cluster";
|
||||
|
||||
export {
|
||||
KubernetesClusterCategory,
|
||||
};
|
||||
15
src/main/catalog/categories/kubernetes-cluster.injectable.ts
Normal file
15
src/main/catalog/categories/kubernetes-cluster.injectable.ts
Normal file
@ -0,0 +1,15 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { KubernetesClusterCategory } from "../../catalog-entities/kubernetes-cluster";
|
||||
import { builtInCategoryInjectionToken } from "../../../common/catalog/category-registry.injectable";
|
||||
|
||||
const kubernetesClusterCategoryInjectable = getInjectable({
|
||||
id: "kubernetes-cluster-category-main",
|
||||
instantiate: () => new KubernetesClusterCategory(),
|
||||
injectionToken: builtInCategoryInjectionToken,
|
||||
});
|
||||
|
||||
export default kubernetesClusterCategoryInjectable;
|
||||
@ -42,7 +42,7 @@ import hotbarStoreInjectable from "../common/hotbars/store.injectable";
|
||||
import { bindEvents } from "./navigation/events";
|
||||
import openDeleteClusterDialogInjectable from "./components/delete-cluster-dialog/open.injectable";
|
||||
import { init } from "@sentry/electron/renderer";
|
||||
import kubernetesClusterCategoryInjectable from "../common/catalog/categories/kubernetes-cluster.injectable";
|
||||
import kubernetesClusterCategoryInjectable from "./catalog/categories/kubernetes-cluster.injectable";
|
||||
import autoRegistrationInjectable from "../common/k8s-api/api-manager/auto-registration.injectable";
|
||||
import assert from "assert";
|
||||
import startFrameInjectable from "./start-frame/start-frame.injectable";
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
|
||||
import { getDiForUnitTesting } from "../../../renderer/getDiForUnitTesting";
|
||||
import { getDiForUnitTesting } from "../../getDiForUnitTesting";
|
||||
import kubernetesClusterCategoryInjectable from "../../catalog/categories/kubernetes-cluster.injectable";
|
||||
import type { KubernetesClusterCategory } from "../kubernetes-cluster";
|
||||
|
||||
18
src/renderer/catalog-entities/kubernetes-cluster.module.scss
Normal file
18
src/renderer/catalog-entities/kubernetes-cluster.module.scss
Normal file
@ -0,0 +1,18 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
|
||||
.statusCell {
|
||||
max-width: 100px;
|
||||
|
||||
:global {
|
||||
.connected, .available {
|
||||
color: var(--colorSuccess);
|
||||
}
|
||||
|
||||
.disconnected, .deleting, .unavailable {
|
||||
color: var(--halfGray);
|
||||
}
|
||||
}
|
||||
}
|
||||
63
src/renderer/catalog-entities/kubernetes-cluster.tsx
Normal file
63
src/renderer/catalog-entities/kubernetes-cluster.tsx
Normal file
@ -0,0 +1,63 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
|
||||
import React from "react";
|
||||
import { categoryVersion } from "../../common/catalog";
|
||||
import type { CatalogCategorySpec, CatalogEntityConstructor } from "../../common/catalog";
|
||||
import { KubernetesCluster, KubernetesClusterCategory as KubernetesClusterCommonCategory } from "../../common/catalog-entities";
|
||||
import styles from "./kubernetes-cluster.module.scss";
|
||||
|
||||
export class KubernetesClusterCategory extends KubernetesClusterCommonCategory {
|
||||
public spec: CatalogCategorySpec = {
|
||||
group: "entity.k8slens.dev",
|
||||
versions: [
|
||||
categoryVersion("v1alpha1", KubernetesCluster as CatalogEntityConstructor<KubernetesCluster>),
|
||||
],
|
||||
names: {
|
||||
kind: "KubernetesCluster",
|
||||
},
|
||||
displayColumns: [
|
||||
{
|
||||
id: "distro",
|
||||
priority: 30,
|
||||
renderCell: entity => (
|
||||
<span key="distro">
|
||||
{(entity as KubernetesCluster).k8sDistro}
|
||||
</span>
|
||||
),
|
||||
titleProps: {
|
||||
title: "Distro",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "api-version",
|
||||
priority: 30,
|
||||
renderCell: entity => (
|
||||
<span key="api-version">
|
||||
{(entity as KubernetesCluster).k8sVersion}
|
||||
</span>
|
||||
),
|
||||
titleProps: {
|
||||
title: "Version",
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "status",
|
||||
priority: 50,
|
||||
renderCell: entity => (
|
||||
<span key="phase" className={entity.status.phase}>
|
||||
{entity.status.phase}
|
||||
</span>
|
||||
),
|
||||
titleProps: {
|
||||
title: "Status",
|
||||
className: styles.statusCell,
|
||||
},
|
||||
searchFilter: entity => entity.status.phase,
|
||||
sortCallback: entity => entity.status.phase,
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { KubernetesClusterCategory } from "../../catalog-entities/kubernetes-cluster";
|
||||
import { builtInCategoryInjectionToken } from "../../../common/catalog/category-registry.injectable";
|
||||
|
||||
const kubernetesClusterCategoryInjectable = getInjectable({
|
||||
id: "kubernetes-cluster-category-renderer",
|
||||
instantiate: () => new KubernetesClusterCategory(),
|
||||
injectionToken: builtInCategoryInjectionToken,
|
||||
});
|
||||
|
||||
export default kubernetesClusterCategoryInjectable;
|
||||
Loading…
Reference in New Issue
Block a user