From f592e31068f7e5fbcd608f35c4796fdf8d8ba588 Mon Sep 17 00:00:00 2001 From: biersoeckli Date: Mon, 11 Nov 2024 14:40:56 +0000 Subject: [PATCH] ui update for cluster information --- src/app/settings/cluster-info/nodeInfo.tsx | 56 ------------------ src/app/settings/cluster/nodeInfo.tsx | 59 +++++++++++++++++++ .../{cluster-info => cluster}/page.tsx | 4 ++ src/app/settings/settings-nav.tsx | 2 +- src/model/node-info.model.ts | 5 +- src/server/services/node.service.ts | 5 +- 6 files changed, 72 insertions(+), 59 deletions(-) delete mode 100644 src/app/settings/cluster-info/nodeInfo.tsx create mode 100644 src/app/settings/cluster/nodeInfo.tsx rename src/app/settings/{cluster-info => cluster}/page.tsx (76%) diff --git a/src/app/settings/cluster-info/nodeInfo.tsx b/src/app/settings/cluster-info/nodeInfo.tsx deleted file mode 100644 index 01592c9..0000000 --- a/src/app/settings/cluster-info/nodeInfo.tsx +++ /dev/null @@ -1,56 +0,0 @@ -'use client' - -import { getAuthUserSession } from "@/server/utils/action-wrapper.utils"; -import { - Breadcrumb, - BreadcrumbItem, - BreadcrumbLink, - BreadcrumbList, -} from "@/components/ui/breadcrumb" -import PageTitle from "@/components/custom/page-title"; -import userService from "@/server/services/user.service"; -import clusterService from "@/server/services/node.service"; -import { NodeInfoModel } from "@/model/node-info.model"; -import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; - -export default async function NodeInfo({ nodeInfos }: { nodeInfos: NodeInfoModel[] }) { - - return ( - - - Cluster Info - Overview of all nodes and capacities in the cluster. - - - - {nodeInfos.map((nodeInfo, index) => ( -
-

Node {index + 1} - ({nodeInfo.status ? 'online' : 'offline'}) -

-
-
- Name: {nodeInfo.name} -
-
- IP: {nodeInfo.ip} -
-
- CPU Cores: {nodeInfo.cpuCapacity} -
-
- Memory: {nodeInfo.ramCapacity} -
-
- OS: {nodeInfo.os} -
-
- Architektur: {nodeInfo.architecture} -
-
-
- ))} -
-
- ) -} diff --git a/src/app/settings/cluster/nodeInfo.tsx b/src/app/settings/cluster/nodeInfo.tsx new file mode 100644 index 0000000..6edec6a --- /dev/null +++ b/src/app/settings/cluster/nodeInfo.tsx @@ -0,0 +1,59 @@ +'use client' + +import { NodeInfoModel } from "@/model/node-info.model"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Code } from "@/components/custom/code"; + +export default async function NodeInfo({ nodeInfos }: { nodeInfos: NodeInfoModel[] }) { + + return ( + + + + Nodes + Overview of all Nodes in your CLuster + + +
+ + {nodeInfos.map((nodeInfo, index) => ( +
+

+ Node {index + 1} +

+
+
+ Name: {nodeInfo.name} +
+
+ IP: {nodeInfo.ip} +
+
+ CPU Cores: {nodeInfo.cpuCapacity} +
+
+ Memory: {nodeInfo.ramCapacity} +
+
+ OS: {nodeInfo.os} | {nodeInfo.architecture} +
+
+
+
+
+
+
+
+ Kernel Version: {nodeInfo.kernelVersion}
+ Container Runtime Version: {nodeInfo.containerRuntimeVersion}
+ Kube Proxy Version: {nodeInfo.kubeProxyVersion}
+ Kubelet Version: {nodeInfo.kubeletVersion} +
+
+
+ ))} +
+
+
+ ) +} diff --git a/src/app/settings/cluster-info/page.tsx b/src/app/settings/cluster/page.tsx similarity index 76% rename from src/app/settings/cluster-info/page.tsx rename to src/app/settings/cluster/page.tsx index 9ef85ba..3d4ae52 100644 --- a/src/app/settings/cluster-info/page.tsx +++ b/src/app/settings/cluster/page.tsx @@ -11,6 +11,10 @@ export default async function ClusterInfoPage() { const nodeInfo = await clusterService.getNodeInfo(); return (
+ +
) diff --git a/src/app/settings/settings-nav.tsx b/src/app/settings/settings-nav.tsx index de641f0..0aeded5 100644 --- a/src/app/settings/settings-nav.tsx +++ b/src/app/settings/settings-nav.tsx @@ -38,7 +38,7 @@ export default function SettingsNav() {
- +
); diff --git a/src/model/node-info.model.ts b/src/model/node-info.model.ts index bd1f5e7..eb141d1 100644 --- a/src/model/node-info.model.ts +++ b/src/model/node-info.model.ts @@ -9,7 +9,10 @@ export const nodeInfoZodModel = z.object({ cpuCapacity: z.string(), ramCapacity: z.string(), ip: z.string(), - diskCapacity: z.string(), + containerRuntimeVersion: z.string(), + kernelVersion: z.string(), + kubeProxyVersion: z.string(), + kubeletVersion: z.string(), }) export type NodeInfoModel = z.infer; \ No newline at end of file diff --git a/src/server/services/node.service.ts b/src/server/services/node.service.ts index d119035..444ca92 100644 --- a/src/server/services/node.service.ts +++ b/src/server/services/node.service.ts @@ -14,7 +14,10 @@ class ClusterService { cpuCapacity: node.status?.capacity?.cpu!, ramCapacity: node.status?.capacity?.memory!, ip: node.status?.addresses?.filter((address) => address.type === 'InternalIP')[0].address!, - diskCapacity: node.status?.capacity?.ephemeralStorage!, + kernelVersion: node.status?.nodeInfo?.kernelVersion!, + containerRuntimeVersion: node.status?.nodeInfo?.containerRuntimeVersion!, + kubeProxyVersion: node.status?.nodeInfo?.kubeProxyVersion!, + kubeletVersion: node.status?.nodeInfo?.kubeletVersion!, } }); }