diff --git a/pkg/compute/guestdrivers/baidu.go b/pkg/compute/guestdrivers/baidu.go index ed933638ae..069727f554 100644 --- a/pkg/compute/guestdrivers/baidu.go +++ b/pkg/compute/guestdrivers/baidu.go @@ -37,8 +37,6 @@ func init() { models.RegisterGuestDriver(&driver) } -func (self *SBaiduGuestDriver) DoScheduleSKUFilter() bool { return false } - func (self *SBaiduGuestDriver) GetHypervisor() string { return api.HYPERVISOR_BAIDU } diff --git a/pkg/compute/guestdrivers/cucloud.go b/pkg/compute/guestdrivers/cucloud.go index 5edb958d90..41b4c37652 100644 --- a/pkg/compute/guestdrivers/cucloud.go +++ b/pkg/compute/guestdrivers/cucloud.go @@ -34,8 +34,6 @@ func init() { models.RegisterGuestDriver(&driver) } -func (self *SCucloudGuestDriver) DoScheduleSKUFilter() bool { return false } - func (self *SCucloudGuestDriver) GetHypervisor() string { return api.HYPERVISOR_CUCLOUD } diff --git a/pkg/compute/guestdrivers/ksyun.go b/pkg/compute/guestdrivers/ksyun.go index 4fa1753d69..180fa99f9c 100644 --- a/pkg/compute/guestdrivers/ksyun.go +++ b/pkg/compute/guestdrivers/ksyun.go @@ -34,8 +34,6 @@ func init() { models.RegisterGuestDriver(&driver) } -func (self *SKsyunGuestDriver) DoScheduleSKUFilter() bool { return false } - func (self *SKsyunGuestDriver) GetHypervisor() string { return api.HYPERVISOR_KSYUN } diff --git a/pkg/compute/guestdrivers/managedvirtual.go b/pkg/compute/guestdrivers/managedvirtual.go index e5684d31f5..461d596f51 100644 --- a/pkg/compute/guestdrivers/managedvirtual.go +++ b/pkg/compute/guestdrivers/managedvirtual.go @@ -1146,7 +1146,7 @@ func (drv *SManagedVirtualizedGuestDriver) RequestChangeVmConfig(ctx context.Con } err := iVM.ChangeConfig(ctx, config) if err != nil { - return nil, errors.Wrap(err, "GuestDriver.RequestChangeVmConfig.ChangeConfig") + return nil, errors.Wrap(err, "ChangeConfig") } err = cloudprovider.WaitCreated(time.Second*5, time.Minute*5, func() bool { @@ -1169,7 +1169,7 @@ func (drv *SManagedVirtualizedGuestDriver) RequestChangeVmConfig(ctx context.Con return false }) if err != nil { - return nil, errors.Wrap(err, "GuestDriver.RequestChangeVmConfig.WaitCreated") + return nil, errors.Wrap(err, "wait config change") } instanceType = iVM.GetInstanceType() @@ -1179,7 +1179,7 @@ func (drv *SManagedVirtualizedGuestDriver) RequestChangeVmConfig(ctx context.Con return nil }) if err != nil { - return nil, errors.Wrap(err, "GuestDriver.RequestChangeVmConfig.Update") + return nil, errors.Wrap(err, "Update") } } diff --git a/pkg/compute/guestdrivers/qingcloud.go b/pkg/compute/guestdrivers/qingcloud.go index 99973bc87a..fa79276292 100644 --- a/pkg/compute/guestdrivers/qingcloud.go +++ b/pkg/compute/guestdrivers/qingcloud.go @@ -34,8 +34,6 @@ func init() { models.RegisterGuestDriver(&driver) } -func (self *SQingCloudGuestDriver) DoScheduleSKUFilter() bool { return false } - func (self *SQingCloudGuestDriver) GetHypervisor() string { return api.HYPERVISOR_QINGCLOUD } diff --git a/pkg/compute/tasks/guest/guest_change_config_task.go b/pkg/compute/tasks/guest/guest_change_config_task.go index 7feea9aec2..45adc11866 100644 --- a/pkg/compute/tasks/guest/guest_change_config_task.go +++ b/pkg/compute/tasks/guest/guest_change_config_task.go @@ -227,7 +227,13 @@ func (task *GuestChangeConfigTask) OnCreateDisksComplete(ctx context.Context, ob return } - if confs.CpuChanged() || confs.MemChanged() { + drv, err := guest.GetDriver() + if err != nil { + task.markStageFailed(ctx, guest, jsonutils.NewString(err.Error())) + return + } + + if confs.CpuChanged() || confs.MemChanged() || (drv.DoScheduleSKUFilter() && confs.InstanceTypeChanged()) { task.SetStage("OnGuestChangeCpuMemSpecComplete", nil) task.startGuestChangeCpuMemSpec(ctx, guest, confs.InstanceType, confs.VcpuCount, confs.CpuSockets, confs.VmemSize) } else { @@ -504,7 +510,13 @@ func (task *GuestChangeConfigTask) OnSyncStatusComplete(ctx context.Context, obj dt.Add(jsonutils.NewString(guest.Id), "id") task.SetStageComplete(ctx, dt) } - logclient.AddActionLogWithStartable(task, guest, logclient.ACT_VM_CHANGE_FLAVOR, "", task.UserCred, true) + confs, err := task.getChangeConfigSetting() + if err != nil { + task.markStageFailed(ctx, guest, jsonutils.NewString(err.Error())) + return + } + notes := fmt.Sprintf("instance_type: %s => %s vcpu: %d => %d mem: %d => %d", confs.Old.InstanceType, confs.InstanceType, confs.Old.VcpuCount, confs.VcpuCount, confs.Old.VmemSize, confs.VmemSize) + logclient.AddActionLogWithStartable(task, guest, logclient.ACT_VM_CHANGE_FLAVOR, notes, task.UserCred, true) guest.EventNotify(ctx, task.UserCred, notifyclient.ActionChangeConfig) }