From 43f9e6a19bc7d55dbd4642ec50a71ac8f224f84d Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Fri, 11 Mar 2022 19:45:39 +0800 Subject: [PATCH] fix: server inherit the vdi_protocol of image property --- cmd/climc/shell/image/images.go | 4 ++++ pkg/apis/image/consts.go | 1 + pkg/compute/models/guests.go | 3 +++ 3 files changed, 8 insertions(+) diff --git a/cmd/climc/shell/image/images.go b/cmd/climc/shell/image/images.go index 1fef1980cb..6e8662d233 100644 --- a/cmd/climc/shell/image/images.go +++ b/cmd/climc/shell/image/images.go @@ -61,6 +61,7 @@ type ImageOptionalOptions struct { NetDriver string `help:"Preferred network driver" choices:"virtio|e1000|vmxnet3"` DisableUsbKbd bool `help:"Disable usb keyboard on this image(for hypervisor kvm)"` BootMode string `help:"UEFI support" choices:"UEFI|BIOS"` + VdiProtocol string `help:"VDI protocol" choices:"vnc|spice"` } func addImageOptionalOptions(s *mcclient.ClientSession, params *jsonutils.JSONDict, args ImageOptionalOptions) error { @@ -146,6 +147,9 @@ func addImageOptionalOptions(s *mcclient.ClientSession, params *jsonutils.JSONDi } else if args.BootMode == "BIOS" { params.Add(jsonutils.JSONFalse, "properties", "uefi_support") } + if len(args.VdiProtocol) > 0 { + params.Add(jsonutils.NewString(args.VdiProtocol), "properties", "vdi_protocol") + } return nil } diff --git a/pkg/apis/image/consts.go b/pkg/apis/image/consts.go index 704d7602af..124fe59098 100644 --- a/pkg/apis/image/consts.go +++ b/pkg/apis/image/consts.go @@ -58,6 +58,7 @@ const ( IMAGE_PARTITION_TYPE = "partition_type" IMAGE_INSTALLED_CLOUDINIT = "installed_cloud_init" IMAGE_DISABLE_USB_KBD = "disable_usb_kbd" + IMAGE_VDI_PROTOCOL = "vdi_protocol" IMAGE_STATUS_UPDATING = "updating" ) diff --git a/pkg/compute/models/guests.go b/pkg/compute/models/guests.go index 11609b55a8..739fd9dcf3 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -1332,6 +1332,9 @@ func (manager *SGuestManager) validateCreateData( } input.DisableUsbKbd = imgProperties[imageapi.IMAGE_DISABLE_USB_KBD] == "true" + if vdi, ok := imgProperties[imageapi.IMAGE_VDI_PROTOCOL]; ok && len(vdi) > 0 { + input.Vdi = vdi + } osType := input.OsType osProf, err = osprofile.GetOSProfileFromImageProperties(imgProperties, hypervisor) if err != nil {