diff --git a/images/virtualization-artifact/pkg/controller/service/attachment_service.go b/images/virtualization-artifact/pkg/controller/service/attachment_service.go index a2b277288a..19a63ee076 100644 --- a/images/virtualization-artifact/pkg/controller/service/attachment_service.go +++ b/images/virtualization-artifact/pkg/controller/service/attachment_service.go @@ -154,8 +154,9 @@ func (s AttachmentService) HotPlugDisk(ctx context.Context, ad *AttachmentDisk, Serial: ad.Name, }, } - switch ad.Kind { - case virtv2.DiskDevice: + + switch { + case ad.PVCName != "": hotplugRequest.VolumeSource = &kvapi.HotplugVolumeSource{ PersistentVolumeClaim: &virtv1.PersistentVolumeClaimVolumeSource{ PersistentVolumeClaimVolumeSource: corev1.PersistentVolumeClaimVolumeSource{ @@ -164,7 +165,7 @@ func (s AttachmentService) HotPlugDisk(ctx context.Context, ad *AttachmentDisk, Hotpluggable: true, }, } - case virtv2.ClusterImageDevice, virtv2.ImageDevice: + case ad.Image != "": hotplugRequest.VolumeSource = &kvapi.HotplugVolumeSource{ ContainerDisk: &kvapi.ContainerDiskSource{ Image: ad.Image, @@ -172,7 +173,7 @@ func (s AttachmentService) HotPlugDisk(ctx context.Context, ad *AttachmentDisk, }, } default: - return fmt.Errorf("unexpected disk kind %s", ad.Kind) + return errors.New("unexpected volume source for attachment") } kv, err := kubevirt.New(ctx, s.client, s.controllerNamespace) @@ -330,14 +331,20 @@ func NewAttachmentDiskFromVirtualDisk(vd *virtv2.VirtualDisk) *AttachmentDisk { } func NewAttachmentDiskFromVirtualImage(vi *virtv2.VirtualImage) *AttachmentDisk { - return &AttachmentDisk{ + ad := AttachmentDisk{ Kind: virtv2.ImageDevice, Name: vi.GetName(), Namespace: vi.GetNamespace(), GenerateName: kvbuilder.GenerateVMIDiskName(vi.GetName()), - PVCName: vi.Status.Target.PersistentVolumeClaim, - Image: vi.Status.Target.RegistryURL, } + + if vi.Spec.Storage == virtv2.StorageContainerRegistry { + ad.Image = vi.Status.Target.RegistryURL + } else { + ad.Image = vi.Status.Target.PersistentVolumeClaim + } + + return &ad } func NewAttachmentDiskFromClusterVirtualImage(cvi *virtv2.ClusterVirtualImage) *AttachmentDisk {