From 40e2721b8247d00a68757535a2b8e59e2c264f6b Mon Sep 17 00:00:00 2001 From: "andreas.dinauer" Date: Sat, 8 Nov 2025 13:57:31 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Add=20namespace,=20pvc,=20pv=20and?= =?UTF-8?q?=20stateful=20sets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/Deployment.ts | 9 ++-- classes/Namespace.ts | 3 +- classes/PersistentVolume.ts | 9 ++++ classes/PersistentVolumeClaim.ts | 18 ++++++++ classes/ResourceTypes.ts | 29 +++++++++++++ classes/StatefulSet.ts | 9 ++++ components/InspectSidebar.vue | 13 +++--- components/NamespaceComponent.vue | 16 +++++++ components/PersistentVolumeClaimComponent.vue | 41 ++++++++++++++++++ components/PersistentVolumeComponent.vue | 18 ++++++++ .../deployments/StatefulSetComponent.vue | 17 ++++++++ .../inspect/resources/DeploymentList.vue | 10 ++++- components/inspect/resources/IngressList.vue | 10 ++++- .../inspect/resources/NamespaceList.vue | 31 +++++++++++++ .../resources/PersistentVolumeClaimList.vue | 37 ++++++++++++++++ .../resources/PersistentVolumeList.vue | 34 +++++++++++++++ components/inspect/resources/SecretList.vue | 33 ++++++++------ components/inspect/resources/ServiceList.vue | 10 ++++- .../inspect/resources/StatefulSetList.vue | 33 ++++++++++++++ nuxt.config.ts | 3 +- pages/account.vue | 2 +- .../inspect/[resource]/[namespace].vue | 8 ++++ public/transparent_logo.png | Bin 0 -> 232890 bytes 23 files changed, 361 insertions(+), 32 deletions(-) create mode 100644 classes/PersistentVolume.ts create mode 100644 classes/PersistentVolumeClaim.ts create mode 100644 classes/ResourceTypes.ts create mode 100644 classes/StatefulSet.ts create mode 100644 components/NamespaceComponent.vue create mode 100644 components/PersistentVolumeClaimComponent.vue create mode 100644 components/PersistentVolumeComponent.vue create mode 100644 components/deployments/StatefulSetComponent.vue create mode 100644 components/inspect/resources/NamespaceList.vue create mode 100644 components/inspect/resources/PersistentVolumeClaimList.vue create mode 100644 components/inspect/resources/PersistentVolumeList.vue create mode 100644 components/inspect/resources/StatefulSetList.vue create mode 100644 public/transparent_logo.png diff --git a/classes/Deployment.ts b/classes/Deployment.ts index c1b1cf8..aa3393a 100644 --- a/classes/Deployment.ts +++ b/classes/Deployment.ts @@ -1,9 +1,12 @@ import type { Metadata } from "./Metadata"; +import type { HasMetadata } from "./repo/ResourceRepo"; -export class Deployment +export class Deployment implements HasMetadata { - metadata?: Metadata; - spec?: DeploymentSpec; + constructor ( + public metadata: Metadata, + public spec: DeploymentSpec + ) {} } export class DeploymentSpec diff --git a/classes/Namespace.ts b/classes/Namespace.ts index a04b5dd..56ac7b2 100644 --- a/classes/Namespace.ts +++ b/classes/Namespace.ts @@ -1,6 +1,7 @@ import type { Metadata } from "./Metadata"; +import type { HasMetadata } from "./repo/ResourceRepo"; -export class Namespace +export class Namespace implements HasMetadata { constructor ( public metadata: Metadata diff --git a/classes/PersistentVolume.ts b/classes/PersistentVolume.ts new file mode 100644 index 0000000..bdeab1c --- /dev/null +++ b/classes/PersistentVolume.ts @@ -0,0 +1,9 @@ +import type { Metadata } from "./Metadata"; +import type { HasMetadata } from "./repo/ResourceRepo"; + +export class PersistentVolume implements HasMetadata +{ + constructor ( + public metadata: Metadata + ) {} +} \ No newline at end of file diff --git a/classes/PersistentVolumeClaim.ts b/classes/PersistentVolumeClaim.ts new file mode 100644 index 0000000..4700558 --- /dev/null +++ b/classes/PersistentVolumeClaim.ts @@ -0,0 +1,18 @@ +import type { Metadata } from "./Metadata"; +import type { HasMetadata } from "./repo/ResourceRepo"; + +export class PersistentVolumeClaim implements HasMetadata +{ + constructor ( + public metadata: Metadata, + public spec: PersistentVolumeClaimSpec + ) {} +} + +export class PersistentVolumeClaimSpec +{ + constructor ( + public accessModes: string[], + public storageClassName: string + ) {} +} \ No newline at end of file diff --git a/classes/ResourceTypes.ts b/classes/ResourceTypes.ts new file mode 100644 index 0000000..19303cb --- /dev/null +++ b/classes/ResourceTypes.ts @@ -0,0 +1,29 @@ +export enum ResourceType { + NODE = "nodes", + NAMESPACE = "namespaces", + CUSTOM_RESOURCE_DEFINITION = "custom-resource-definitions", + STATEFUL_SET = "stateful-sets", + DEPLOYMENT = "deployments", + POD = "pods", + SERVICE = "services", + INGRESS = "ingresses", + SECRET = "secrets", + CONFIG_MAP = "config-maps", + PVC = "pvcs", + PV = "pvs" +} + +export const RESOURCE_DISPLAY_NAMES: Map = new Map([ + [ResourceType.NODE, "Node"], + [ResourceType.NAMESPACE, "Namespace"], + [ResourceType.CUSTOM_RESOURCE_DEFINITION, "CRD"], + [ResourceType.STATEFUL_SET, "Stateful Set"], + [ResourceType.DEPLOYMENT, "Deployment"], + [ResourceType.POD, "Pod"], + [ResourceType.SERVICE, "Service"], + [ResourceType.INGRESS, "Ingress"], + [ResourceType.SECRET, "Secret"], + [ResourceType.CONFIG_MAP, "Config Map"], + [ResourceType.PVC, "PVC"], + [ResourceType.PV, "PV"] +]); diff --git a/classes/StatefulSet.ts b/classes/StatefulSet.ts new file mode 100644 index 0000000..f4be30a --- /dev/null +++ b/classes/StatefulSet.ts @@ -0,0 +1,9 @@ +import type { Metadata } from "./Metadata"; +import type { HasMetadata } from "./repo/ResourceRepo"; + +export class StatefulSet implements HasMetadata +{ + constructor ( + public metadata: Metadata + ) {} +} \ No newline at end of file diff --git a/components/InspectSidebar.vue b/components/InspectSidebar.vue index 884b36d..acb3276 100644 --- a/components/InspectSidebar.vue +++ b/components/InspectSidebar.vue @@ -3,7 +3,7 @@
- account_circle -

{{ user.username }}

-
+ account_circle +

{{ user.username }}

+
@@ -22,8 +22,7 @@ import SidebarTemplate from './SidebarTemplate.vue'; import { StringUtils, useNamespaceStore } from '#imports'; - -const resources = new Map([["nodes", "Nodes"], ["ingresses", "Ingresses"], ["services", "Services"], ["deployments", "Deployments"], ["stateful-sets", "Stateful Sets"], ["pods", "Pods"], ["secrets", "Secrets"], ["config-maps", "Config Maps"], ["custom-resource-definitions", "CDRs"]]); +import { RESOURCE_DISPLAY_NAMES, ResourceType } from '~/classes/ResourceTypes'; const namespaceStore = useNamespaceStore(); @@ -56,7 +55,7 @@ const base = computed(() => { const inNamespaceScopedResource: ComputedRef = computed(() => { const resource = useRoute().params.resource as string; - if(['custom-resource-definitions', 'nodes'].includes(resource)) + if(['custom-resource-definitions', 'nodes', 'pvs', 'namespaces'].includes(resource)) { return false; } diff --git a/components/NamespaceComponent.vue b/components/NamespaceComponent.vue new file mode 100644 index 0000000..a24308f --- /dev/null +++ b/components/NamespaceComponent.vue @@ -0,0 +1,16 @@ + + + \ No newline at end of file diff --git a/components/PersistentVolumeClaimComponent.vue b/components/PersistentVolumeClaimComponent.vue new file mode 100644 index 0000000..d3e16a8 --- /dev/null +++ b/components/PersistentVolumeClaimComponent.vue @@ -0,0 +1,41 @@ + + + \ No newline at end of file diff --git a/components/PersistentVolumeComponent.vue b/components/PersistentVolumeComponent.vue new file mode 100644 index 0000000..38c7b90 --- /dev/null +++ b/components/PersistentVolumeComponent.vue @@ -0,0 +1,18 @@ + + + \ No newline at end of file diff --git a/components/deployments/StatefulSetComponent.vue b/components/deployments/StatefulSetComponent.vue new file mode 100644 index 0000000..78d4a59 --- /dev/null +++ b/components/deployments/StatefulSetComponent.vue @@ -0,0 +1,17 @@ + + + \ No newline at end of file diff --git a/components/inspect/resources/DeploymentList.vue b/components/inspect/resources/DeploymentList.vue index 0d5ff1f..f7964d3 100644 --- a/components/inspect/resources/DeploymentList.vue +++ b/components/inspect/resources/DeploymentList.vue @@ -1,5 +1,5 @@