diff --git a/api/client/kubeclient/vm.go b/api/client/kubeclient/vm.go index c14f0766e8..ed75d79401 100644 --- a/api/client/kubeclient/vm.go +++ b/api/client/kubeclient/vm.go @@ -160,6 +160,7 @@ func (v vm) AddVolume(ctx context.Context, name string, opts v1alpha2.VirtualMac Param("volumeKind", opts.VolumeKind). Param("pvcName", opts.PVCName). Param("image", opts.Image). + Param("isCdrom", strconv.FormatBool(opts.IsCdrom)). Do(ctx). Error() } diff --git a/api/pkg/apiserver/api/generated/openapi/zz_generated.openapi.go b/api/pkg/apiserver/api/generated/openapi/zz_generated.openapi.go index 8849a971b3..546666405b 100644 --- a/api/pkg/apiserver/api/generated/openapi/zz_generated.openapi.go +++ b/api/pkg/apiserver/api/generated/openapi/zz_generated.openapi.go @@ -5263,8 +5263,15 @@ func schema_virtualization_api_subresources_v1alpha2_VirtualMachineAddVolume(ref Format: "", }, }, + "isCdrom": { + SchemaProps: spec.SchemaProps{ + Default: false, + Type: []string{"boolean"}, + Format: "", + }, + }, }, - Required: []string{"name", "volumeKind", "pvcName", "image"}, + Required: []string{"name", "volumeKind", "pvcName", "image", "isCdrom"}, }, }, } diff --git a/api/subresources/types.go b/api/subresources/types.go index 80cad755dc..c8d84e5c12 100644 --- a/api/subresources/types.go +++ b/api/subresources/types.go @@ -57,7 +57,7 @@ type VirtualMachineAddVolume struct { VolumeKind string PVCName string Image string - AsCdrom bool + IsCdrom bool } // +genclient diff --git a/api/subresources/v1alpha2/types.go b/api/subresources/v1alpha2/types.go index be618c55fd..a4c1a054cb 100644 --- a/api/subresources/v1alpha2/types.go +++ b/api/subresources/v1alpha2/types.go @@ -59,7 +59,7 @@ type VirtualMachineAddVolume struct { VolumeKind string `json:"volumeKind"` PVCName string `json:"pvcName"` Image string `json:"image"` - AsCdrom bool `json:"asCdrom"` + IsCdrom bool `json:"isCdrom"` } // +genclient diff --git a/api/subresources/v1alpha2/zz_generated.conversion.go b/api/subresources/v1alpha2/zz_generated.conversion.go index 8a0b9d062e..4ed39f59c7 100644 --- a/api/subresources/v1alpha2/zz_generated.conversion.go +++ b/api/subresources/v1alpha2/zz_generated.conversion.go @@ -166,6 +166,7 @@ func autoConvert_v1alpha2_VirtualMachineAddVolume_To_subresources_VirtualMachine out.VolumeKind = in.VolumeKind out.PVCName = in.PVCName out.Image = in.Image + out.IsCdrom = in.IsCdrom return nil } @@ -179,6 +180,7 @@ func autoConvert_subresources_VirtualMachineAddVolume_To_v1alpha2_VirtualMachine out.VolumeKind = in.VolumeKind out.PVCName = in.PVCName out.Image = in.Image + out.IsCdrom = in.IsCdrom return nil } @@ -218,6 +220,13 @@ func autoConvert_url_Values_To_v1alpha2_VirtualMachineAddVolume(in *url.Values, } else { out.Image = "" } + if values, ok := map[string][]string(*in)["isCdrom"]; ok && len(values) > 0 { + if err := runtime.Convert_Slice_string_To_bool(&values, &out.IsCdrom, s); err != nil { + return err + } + } else { + out.IsCdrom = false + } return nil } diff --git a/images/virtualization-artifact/pkg/apiserver/registry/vm/rest/add_volume.go b/images/virtualization-artifact/pkg/apiserver/registry/vm/rest/add_volume.go index 202883a824..6dc08ce4ea 100644 --- a/images/virtualization-artifact/pkg/apiserver/registry/vm/rest/add_volume.go +++ b/images/virtualization-artifact/pkg/apiserver/registry/vm/rest/add_volume.go @@ -104,7 +104,7 @@ func (r AddVolumeREST) requestFromKubevirt(opts *subresources.VirtualMachineAddV func (r AddVolumeREST) genMutateRequestHook(opts *subresources.VirtualMachineAddVolume) (mutateRequestHook, error) { var dd virtv1.DiskDevice - if opts.AsCdrom { + if opts.IsCdrom { dd.CDRom = &virtv1.CDRomTarget{ Bus: virtv1.DiskBusSATA, } diff --git a/images/virtualization-artifact/pkg/controller/service/attachment_service.go b/images/virtualization-artifact/pkg/controller/service/attachment_service.go index 838216a046..30834e4200 100644 --- a/images/virtualization-artifact/pkg/controller/service/attachment_service.go +++ b/images/virtualization-artifact/pkg/controller/service/attachment_service.go @@ -150,6 +150,7 @@ func (s AttachmentService) HotPlugDisk(ctx context.Context, ad *AttachmentDisk, Name: ad.GenerateName, Image: ad.Image, PVCName: ad.PVCName, + IsCdrom: ad.IsCdrom, }) } @@ -275,6 +276,7 @@ type AttachmentDisk struct { GenerateName string PVCName string Image string + IsCdrom bool } func NewAttachmentDiskFromVirtualDisk(vd *virtv2.VirtualDisk) *AttachmentDisk { @@ -293,6 +295,7 @@ func NewAttachmentDiskFromVirtualImage(vi *virtv2.VirtualImage) *AttachmentDisk Name: vi.GetName(), Namespace: vi.GetNamespace(), GenerateName: kvbuilder.GenerateVMIDiskName(vi.GetName()), + IsCdrom: vi.Status.CDROM, } if vi.Spec.Storage == virtv2.StorageContainerRegistry { @@ -310,5 +313,6 @@ func NewAttachmentDiskFromClusterVirtualImage(cvi *virtv2.ClusterVirtualImage) * Name: cvi.GetName(), GenerateName: kvbuilder.GenerateCVMIDiskName(cvi.GetName()), Image: cvi.Status.Target.RegistryURL, + IsCdrom: cvi.Status.CDROM, } }