diff --git a/pkg/compute/guestdrivers/nutanix.go b/pkg/compute/guestdrivers/nutanix.go index 13788c28e8..1885bb787b 100644 --- a/pkg/compute/guestdrivers/nutanix.go +++ b/pkg/compute/guestdrivers/nutanix.go @@ -16,8 +16,11 @@ package guestdrivers import ( "context" + "fmt" "time" + "yunion.io/x/pkg/utils" + api "yunion.io/x/onecloud/pkg/apis/compute" "yunion.io/x/onecloud/pkg/cloudcommon/db/quotas" "yunion.io/x/onecloud/pkg/cloudcommon/db/taskman" @@ -144,6 +147,16 @@ func (self *SNutanixGuestDriver) GetDeployStatus() ([]string, error) { return []string{api.VM_READY}, nil } +func (self *SNutanixGuestDriver) ValidateResizeDisk(guest *models.SGuest, disk *models.SDisk, storage *models.SStorage) error { + if !utils.IsInStringArray(guest.Status, []string{api.VM_READY}) { + return fmt.Errorf("Cannot resize disk when guest in status %s", guest.Status) + } + if disk.DiskSize/1024%1 > 0 { + return fmt.Errorf("Resize disk size must be an integer multiple of 1G") + } + return nil +} + func (self *SNutanixGuestDriver) ValidateCreateEip(ctx context.Context, userCred mcclient.TokenCredential, input api.ServerCreateEipInput) error { return httperrors.NewInputParameterError("%s not support create eip", self.GetHypervisor()) } diff --git a/pkg/multicloud/nutanix/host.go b/pkg/multicloud/nutanix/host.go index a6bacdaf38..67378397fb 100644 --- a/pkg/multicloud/nutanix/host.go +++ b/pkg/multicloud/nutanix/host.go @@ -299,7 +299,7 @@ func (self *SHost) CreateVM(opts *cloudprovider.SManagedVMCreateConfig) (cloudpr "disk_address": map[string]string{ "vmdisk_uuid": image.VMDiskID, }, - "minimum_size": image.VMDiskSize, + "minimum_size": opts.SysDisk.SizeGB * 1024 * 1024 * 1024, }, }, }