From fd0bc652a987934c416feca10c6d00c10f31d1f5 Mon Sep 17 00:00:00 2001
From: Ali <83188384+testA113@users.noreply.github.com>
Date: Mon, 14 Oct 2024 10:48:13 +1300
Subject: [PATCH] fix(volumes): update external labels CE [r8s-108] (#7)
---
api/http/models/kubernetes/volumes.go | 1 +
api/kubernetes/cli/volumes.go | 1 +
app/kubernetes/views/volumes/edit/volumeController.js | 4 ++--
app/react/kubernetes/volumes/ListView/columns.name.tsx | 4 ++--
app/react/kubernetes/volumes/ListView/types.ts | 1 +
app/react/kubernetes/volumes/queries/useVolumesQuery.ts | 2 ++
app/react/kubernetes/volumes/types.ts | 1 +
app/react/kubernetes/volumes/utils.ts | 4 ----
8 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/api/http/models/kubernetes/volumes.go b/api/http/models/kubernetes/volumes.go
index 31c24d06c..3a8921422 100644
--- a/api/http/models/kubernetes/volumes.go
+++ b/api/http/models/kubernetes/volumes.go
@@ -38,6 +38,7 @@ type (
VolumeMode *corev1.PersistentVolumeMode `json:"volumeMode"`
OwningApplications []K8sApplication `json:"owningApplications,omitempty"`
Phase corev1.PersistentVolumeClaimPhase `json:"phase"`
+ Labels map[string]string
}
K8sStorageClass struct {
diff --git a/api/kubernetes/cli/volumes.go b/api/kubernetes/cli/volumes.go
index 3308816a5..8a8d81f62 100644
--- a/api/kubernetes/cli/volumes.go
+++ b/api/kubernetes/cli/volumes.go
@@ -135,6 +135,7 @@ func parsePersistentVolumeClaim(volume *corev1.PersistentVolumeClaim) models.K8s
VolumeMode: volume.Spec.VolumeMode,
OwningApplications: nil,
Phase: volume.Status.Phase,
+ Labels: volume.Labels,
}
}
diff --git a/app/kubernetes/views/volumes/edit/volumeController.js b/app/kubernetes/views/volumes/edit/volumeController.js
index 5a66bae94..9fb855440 100644
--- a/app/kubernetes/views/volumes/edit/volumeController.js
+++ b/app/kubernetes/views/volumes/edit/volumeController.js
@@ -6,7 +6,7 @@ import KubernetesEventHelper from 'Kubernetes/helpers/eventHelper';
import { KubernetesStorageClassAccessPolicies } from 'Kubernetes/models/storage-class/models';
import KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';
import { confirmRedeploy } from '@/react/kubernetes/volumes/ItemView/ConfirmRedeployModal';
-import { isVolumeUsed, isVolumeExternal } from '@/react/kubernetes/volumes/utils';
+import { isVolumeUsed } from '@/react/kubernetes/volumes/utils';
class KubernetesVolumeController {
/* @ngInject */
@@ -50,7 +50,7 @@ class KubernetesVolumeController {
}
isExternalVolume() {
- return isVolumeExternal(this.volume);
+ return !this.volume.PersistentVolumeClaim.ApplicationOwner;
}
isSystemNamespace() {
diff --git a/app/react/kubernetes/volumes/ListView/columns.name.tsx b/app/react/kubernetes/volumes/ListView/columns.name.tsx
index 1dd17b677..f1fc25138 100644
--- a/app/react/kubernetes/volumes/ListView/columns.name.tsx
+++ b/app/react/kubernetes/volumes/ListView/columns.name.tsx
@@ -8,7 +8,7 @@ import { ExternalBadge } from '@@/Badge/ExternalBadge';
import { UnusedBadge } from '@@/Badge/UnusedBadge';
import { useNamespacesQuery } from '../../namespaces/queries/useNamespacesQuery';
-import { isVolumeExternal, isVolumeUsed } from '../utils';
+import { isVolumeUsed } from '../utils';
import { VolumeViewModel } from './types';
import { helper } from './columns.helper';
@@ -44,7 +44,7 @@ export function NameCell({
) : (
<>
- {isVolumeExternal(item) && }
+ {item.PersistentVolumeClaim.IsExternal && }
{!isVolumeUsed(item) && }
>
)}
diff --git a/app/react/kubernetes/volumes/ListView/types.ts b/app/react/kubernetes/volumes/ListView/types.ts
index 9654cb5b8..dd8b3efcf 100644
--- a/app/react/kubernetes/volumes/ListView/types.ts
+++ b/app/react/kubernetes/volumes/ListView/types.ts
@@ -13,6 +13,7 @@ export interface VolumeViewModel {
Storage?: unknown;
CreationDate?: string;
ApplicationOwner?: string;
+ IsExternal?: boolean;
};
ResourcePool: {
Namespace: {
diff --git a/app/react/kubernetes/volumes/queries/useVolumesQuery.ts b/app/react/kubernetes/volumes/queries/useVolumesQuery.ts
index 63c5b6ab5..b70e2dc67 100644
--- a/app/react/kubernetes/volumes/queries/useVolumesQuery.ts
+++ b/app/react/kubernetes/volumes/queries/useVolumesQuery.ts
@@ -9,6 +9,7 @@ import { Volume } from '@/kubernetes/models/volume/Volume';
import { parseKubernetesAxiosError } from '../../axiosError';
import { K8sVolumeInfo } from '../types';
import { VolumeViewModel, StorageClassViewModel } from '../ListView/types';
+import { appOwnerLabel } from '../../applications/constants';
import { queryKeys } from './query-keys';
@@ -86,6 +87,7 @@ function convertToVolumeViewModels(
CreationDate: volume.persistentVolumeClaim.creationDate,
ApplicationOwner:
volume.persistentVolumeClaim.owningApplications?.[0]?.Name,
+ IsExternal: !volume.persistentVolumeClaim.labels?.[appOwnerLabel],
},
ResourcePool: {
Namespace: {
diff --git a/app/react/kubernetes/volumes/types.ts b/app/react/kubernetes/volumes/types.ts
index f2b44988c..303f1a75d 100644
--- a/app/react/kubernetes/volumes/types.ts
+++ b/app/react/kubernetes/volumes/types.ts
@@ -37,6 +37,7 @@ interface K8sPersistentVolumeClaim {
volumeMode?: PersistentVolumeClaimSpec['volumeMode'];
owningApplications?: K8sVolOwningApplication[];
phase: PersistentVolumeClaimStatus['phase'];
+ labels?: { [key: string]: string };
}
interface K8sStorageClass {
diff --git a/app/react/kubernetes/volumes/utils.ts b/app/react/kubernetes/volumes/utils.ts
index 4a9fdfcc3..83c501d60 100644
--- a/app/react/kubernetes/volumes/utils.ts
+++ b/app/react/kubernetes/volumes/utils.ts
@@ -6,10 +6,6 @@ export function isVolumeUsed(volume: VolumeViewModel) {
return volume.Applications.length !== 0;
}
-export function isVolumeExternal(volume: VolumeViewModel) {
- return !volume.PersistentVolumeClaim.ApplicationOwner;
-}
-
export function generatedApplicationConfigVolumeName(applicationName: string) {
return `config-${applicationName}-${uuidv4()}`;
}