diff --git a/images/virtualization-artifact/pkg/controller/kvbuilder/kvvm_utils.go b/images/virtualization-artifact/pkg/controller/kvbuilder/kvvm_utils.go index aeca27b35e..eaa1aa0a50 100644 --- a/images/virtualization-artifact/pkg/controller/kvbuilder/kvvm_utils.go +++ b/images/virtualization-artifact/pkg/controller/kvbuilder/kvvm_utils.go @@ -257,8 +257,14 @@ func ApplyVirtualMachineSpec( switch { case device.PVCName != "": + pvcName := device.PVCName + if kind == v1alpha2.DiskDevice { + if vd := vdByName[name]; vd != nil && vd.Status.Target.PersistentVolumeClaim != "" { + pvcName = vd.Status.Target.PersistentVolumeClaim + } + } if err := kvvm.SetDisk(device.VolumeName, SetDiskOptions{ - PersistentVolumeClaim: pointer.GetPointer(device.PVCName), + PersistentVolumeClaim: pointer.GetPointer(pvcName), IsHotplugged: true, Serial: GenerateSerialFromObject(obj), }); err != nil { diff --git a/images/virtualization-artifact/pkg/controller/vd/internal/validator/storage_class_validator.go b/images/virtualization-artifact/pkg/controller/vd/internal/validator/storage_class_validator.go index 70b8346715..fe06ca4745 100644 --- a/images/virtualization-artifact/pkg/controller/vd/internal/validator/storage_class_validator.go +++ b/images/virtualization-artifact/pkg/controller/vd/internal/validator/storage_class_validator.go @@ -125,12 +125,6 @@ func (v *StorageClassValidator) validateTargetStorageClassForVolumeMigration(ctx return fmt.Errorf("storage class cannot be changed unless the VirtualDisk is mounted to a running virtual machine") } - for _, bd := range vm.Status.BlockDeviceRefs { - if bd.Hotplugged { - return fmt.Errorf("for now, changing the storage class is not allowed if the virtual machine has hot-plugged block devices") - } - } - currentStorageClassName := newVD.Status.StorageClassName currentStorageClass, err := v.scService.GetStorageClass(ctx, currentStorageClassName) if err != nil {