From e429b911422107632f225ed482633d6350b7a339 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Thu, 14 Oct 2021 09:10:22 -0400 Subject: [PATCH] Use enum for lens specific KubernetesCluster statuses in more places Signed-off-by: Sebastian Malton --- src/common/catalog-entities/index.ts | 9 ++++--- .../catalog-entities/kubernetes-cluster.ts | 13 +++++++--- src/main/cluster-manager.ts | 25 ++++++++----------- .../components/hotbar/hotbar-entity-icon.tsx | 3 ++- 4 files changed, 28 insertions(+), 22 deletions(-) diff --git a/src/common/catalog-entities/index.ts b/src/common/catalog-entities/index.ts index ee8a41b552..ff7cc3f62d 100644 --- a/src/common/catalog-entities/index.ts +++ b/src/common/catalog-entities/index.ts @@ -19,6 +19,9 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -export * from "./general"; -export * from "./kubernetes-cluster"; -export * from "./web-link"; +export { KubernetesCluster, kubernetesClusterCategory } from "./kubernetes-cluster"; +export { GeneralEntity } from "./general"; +export { WebLink } from "./web-link"; + +export type { KubernetesClusterPrometheusMetrics, KubernetesClusterSpec, KubernetesClusterMetadata } from "./kubernetes-cluster"; +export type { WebLinkSpec, WebLinkStatus, WebLinkStatusPhase } from "./web-link"; diff --git a/src/common/catalog-entities/kubernetes-cluster.ts b/src/common/catalog-entities/kubernetes-cluster.ts index ebcb255ea9..2332494177 100644 --- a/src/common/catalog-entities/kubernetes-cluster.ts +++ b/src/common/catalog-entities/kubernetes-cluster.ts @@ -54,6 +54,13 @@ export interface KubernetesClusterSpec extends CatalogEntitySpec { accessibleNamespaces?: string[]; } +export enum LensKubernetesClusterStatus { + DELETING = "deleting", + CONNECTING = "connecting", + CONNECTED = "connected", + DISCONNECTED = "disconnected" +} + export interface KubernetesClusterMetadata extends CatalogEntityMetadata { distro?: string; kubeVersion?: string; @@ -104,15 +111,15 @@ export class KubernetesCluster extends CatalogEntity requestMain(clusterDisconnectHandler, this.metadata.uid) }); break; - case "disconnected": + case LensKubernetesClusterStatus.DISCONNECTED: context.menuItems.push({ title: "Connect", icon: "link", diff --git a/src/main/cluster-manager.ts b/src/main/cluster-manager.ts index 5d723f63d6..8cd6664b6a 100644 --- a/src/main/cluster-manager.ts +++ b/src/main/cluster-manager.ts @@ -27,7 +27,7 @@ import logger from "./logger"; import { apiKubePrefix } from "../common/vars"; import { getClusterIdFromHost, Singleton } from "../common/utils"; import { catalogEntityRegistry } from "./catalog"; -import { KubernetesCluster, KubernetesClusterPrometheusMetrics } from "../common/catalog-entities/kubernetes-cluster"; +import { KubernetesCluster, KubernetesClusterPrometheusMetrics, LensKubernetesClusterStatus } from "../common/catalog-entities/kubernetes-cluster"; import { ipcMainOn } from "../common/ipc"; import { once } from "lodash"; import { ClusterStore } from "../common/cluster-store"; @@ -35,14 +35,7 @@ import type { ClusterId } from "../common/cluster-types"; const logPrefix = "[CLUSTER-MANAGER]:"; -enum LensClusterStatus { - DELETING = "deleting", - CONNECTING = "connecting", - CONNECTED = "connected", - DISCONNECTED = "disconnected" -} - -const lensSpecificClusterStatuses: Set = new Set(Object.values(LensClusterStatus)); +const lensSpecificClusterStatuses: Set = new Set(Object.values(LensKubernetesClusterStatus)); export class ClusterManager extends Singleton { private store = ClusterStore.getInstance(); @@ -155,20 +148,20 @@ export class ClusterManager extends Singleton { @action protected updateEntityStatus(entity: KubernetesCluster, cluster?: Cluster) { if (this.deleting.has(entity.getId())) { - entity.status.phase = LensClusterStatus.DELETING; + entity.status.phase = LensKubernetesClusterStatus.DELETING; entity.status.enabled = false; } else { entity.status.phase = (() => { if (!cluster) { - return LensClusterStatus.DISCONNECTED; + return LensKubernetesClusterStatus.DISCONNECTED; } if (cluster.accessible) { - return LensClusterStatus.CONNECTED; + return LensKubernetesClusterStatus.CONNECTED; } if (!cluster.disconnected) { - return LensClusterStatus.CONNECTING; + return LensKubernetesClusterStatus.CONNECTING; } // Extensions are not allowed to use the Lens specific status phases @@ -176,7 +169,7 @@ export class ClusterManager extends Singleton { return entity.status.phase; } - return LensClusterStatus.DISCONNECTED; + return LensKubernetesClusterStatus.DISCONNECTED; })(); entity.status.enabled = true; @@ -288,7 +281,9 @@ export function catalogEntityFromCluster(cluster: Cluster) { icon: {} }, status: { - phase: cluster.disconnected ? "disconnected" : "connected", + phase: cluster.disconnected + ? LensKubernetesClusterStatus.DISCONNECTED + : LensKubernetesClusterStatus.CONNECTED, reason: "", message: "", active: !cluster.disconnected diff --git a/src/renderer/components/hotbar/hotbar-entity-icon.tsx b/src/renderer/components/hotbar/hotbar-entity-icon.tsx index fc6628f3eb..05ce960a23 100644 --- a/src/renderer/components/hotbar/hotbar-entity-icon.tsx +++ b/src/renderer/components/hotbar/hotbar-entity-icon.tsx @@ -31,6 +31,7 @@ import { cssNames, IClassName } from "../../utils"; import { Icon } from "../icon"; import { HotbarIcon } from "./hotbar-icon"; import { HotbarStore } from "../../../common/hotbar-store"; +import { LensKubernetesClusterStatus } from "../../../common/catalog-entities/kubernetes-cluster"; interface Props extends DOMAttributes { entity: CatalogEntity; @@ -78,7 +79,7 @@ export class HotbarEntityIcon extends React.Component { return null; } - const className = cssNames("led", { online: this.props.entity.status.phase == "connected"}); // TODO: make it more generic + const className = cssNames("led", { online: this.props.entity.status.phase === LensKubernetesClusterStatus.CONNECTED}); // TODO: make it more generic return
; }