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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get k8sVersion() {
|
||||||
|
return this.metadata.kubeVersion?.replace("unknown", "") || "";
|
||||||
|
}
|
||||||
|
|
||||||
|
get k8sDistro() {
|
||||||
|
return this.metadata.distro?.replace("unknown", "") || "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class KubernetesClusterCategory extends CatalogCategory {
|
export class KubernetesClusterCategory extends CatalogCategory {
|
||||||
|
|||||||
@ -4,12 +4,10 @@
|
|||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { KubernetesClusterCategory } from "../../catalog-entities/kubernetes-cluster";
|
import { KubernetesClusterCategory } from "../../catalog-entities/kubernetes-cluster";
|
||||||
import { builtInCategoryInjectionToken } from "../category-registry.injectable";
|
|
||||||
|
|
||||||
const kubernetesClusterCategoryInjectable = getInjectable({
|
const kubernetesClusterCategoryInjectable = getInjectable({
|
||||||
id: "kubernetes-cluster-category",
|
id: "kubernetes-cluster-category",
|
||||||
instantiate: () => new KubernetesClusterCategory(),
|
instantiate: () => new KubernetesClusterCategory(),
|
||||||
injectionToken: builtInCategoryInjectionToken,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
export default kubernetesClusterCategoryInjectable;
|
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 { bindEvents } from "./navigation/events";
|
||||||
import openDeleteClusterDialogInjectable from "./components/delete-cluster-dialog/open.injectable";
|
import openDeleteClusterDialogInjectable from "./components/delete-cluster-dialog/open.injectable";
|
||||||
import { init } from "@sentry/electron/renderer";
|
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 autoRegistrationInjectable from "../common/k8s-api/api-manager/auto-registration.injectable";
|
||||||
import assert from "assert";
|
import assert from "assert";
|
||||||
import startFrameInjectable from "./start-frame/start-frame.injectable";
|
import startFrameInjectable from "./start-frame/start-frame.injectable";
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* 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 kubernetesClusterCategoryInjectable from "../../catalog/categories/kubernetes-cluster.injectable";
|
||||||
import type { KubernetesClusterCategory } from "../kubernetes-cluster";
|
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