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()}`; }