From d94003f8c28876b4e5803bb04a6049ab63f812e6 Mon Sep 17 00:00:00 2001 From: Andy Lee Date: Thu, 27 Nov 2025 14:22:06 +0800 Subject: [PATCH] feat: allow user to attach volume to muliple VMs (#620) Signed-off-by: Andy Lee --- .../dialog/HarvesterAddHotplugVolumeModal.vue | 2 +- .../VirtualMachineVolume/type/existing.vue | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/pkg/harvester/dialog/HarvesterAddHotplugVolumeModal.vue b/pkg/harvester/dialog/HarvesterAddHotplugVolumeModal.vue index 14dcfb2d..83085523 100644 --- a/pkg/harvester/dialog/HarvesterAddHotplugVolumeModal.vue +++ b/pkg/harvester/dialog/HarvesterAddHotplugVolumeModal.vue @@ -62,7 +62,7 @@ export default { return false; } - return !pvc.attachVM; + return true; }) .map((pvc) => { return { diff --git a/pkg/harvester/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/existing.vue b/pkg/harvester/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/existing.vue index 09356aa0..5d05c150 100644 --- a/pkg/harvester/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/existing.vue +++ b/pkg/harvester/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/existing.vue @@ -99,7 +99,6 @@ export default { this.allPVCs .filter( (pvc) => { let isAvailable = true; - let isBeingUsed = false; this.rows.forEach( (O) => { if (O.volumeName === pvc.metadata.name) { @@ -111,17 +110,16 @@ export default { return false; } + // already used as image volume + if (this.idx > 0 && pvc.metadata?.annotations?.[HCI_ANNOTATIONS.IMAGE_ID]) { + return false; + } + if (pvc.isGoldenImageVolume) { return false; } - if (pvc.attachVM && isAvailable && pvc.attachVM?.id === this.vm?.id && this.isEdit) { - isBeingUsed = false; - } else if (pvc.attachVM) { - isBeingUsed = true; - } - - return isAvailable && !isBeingUsed && pvc.isAvailable; + return isAvailable && pvc.isAvailable; }) .map((pvc) => { return {