From 12792083ff7e48601fd022ea0c7b8497cb9889ee Mon Sep 17 00:00:00 2001 From: ioito Date: Mon, 8 Jul 2019 17:06:00 +0800 Subject: [PATCH] add task failed code --- pkg/compute/guestdrivers/managedvirtual.go | 22 +++++++++---------- pkg/compute/tasks/guest_change_config_task.go | 6 ++++- pkg/util/qcloud/instance.go | 2 +- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/pkg/compute/guestdrivers/managedvirtual.go b/pkg/compute/guestdrivers/managedvirtual.go index 1e449adb6a..9b68885230 100644 --- a/pkg/compute/guestdrivers/managedvirtual.go +++ b/pkg/compute/guestdrivers/managedvirtual.go @@ -238,28 +238,28 @@ func (self *SManagedVirtualizedGuestDriver) RequestAttachDisk(ctx context.Contex } func (self *SManagedVirtualizedGuestDriver) RequestStartOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, userCred mcclient.TokenCredential, task taskman.ITask) (jsonutils.JSONObject, error) { - ihost, e := host.GetIHost() - if e != nil { - return nil, e + ihost, err := host.GetIHost() + if err != nil { + return nil, err } - ivm, e := ihost.GetIVMById(guest.GetExternalId()) - if e != nil { - return nil, e + ivm, err := ihost.GetIVMById(guest.GetExternalId()) + if err != nil { + return nil, err } result := jsonutils.NewDict() if ivm.GetStatus() != api.VM_RUNNING { - if err := ivm.StartVM(ctx); err != nil { - return nil, e - } else { - task.ScheduleRun(result) + err := ivm.StartVM(ctx) + if err != nil { + return nil, err } + task.ScheduleRun(result) } else { result.Add(jsonutils.NewBool(true), "is_running") } - return result, e + return result, nil } func (self *SManagedVirtualizedGuestDriver) RequestDeployGuestOnHost(ctx context.Context, guest *models.SGuest, host *models.SHost, task taskman.ITask) error { diff --git a/pkg/compute/tasks/guest_change_config_task.go b/pkg/compute/tasks/guest_change_config_task.go index 476dbcab92..11d2e582eb 100644 --- a/pkg/compute/tasks/guest_change_config_task.go +++ b/pkg/compute/tasks/guest_change_config_task.go @@ -243,7 +243,7 @@ func (self *GuestChangeConfigTask) OnSyncConfigComplete(ctx context.Context, obj func (self *GuestChangeConfigTask) OnSyncStatusComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { guest := obj.(*models.SGuest) if guest.Status == api.VM_READY && jsonutils.QueryBoolean(self.Params, "auto_start", false) { - self.SetStage("on_guest_start_complete", nil) + self.SetStage("OnGuestStartComplete", nil) guest.StartGueststartTask(ctx, self.UserCred, nil, self.GetTaskId()) } else { dt := jsonutils.NewDict() @@ -260,6 +260,10 @@ func (self *GuestChangeConfigTask) OnGuestStartComplete(ctx context.Context, obj self.SetStageComplete(ctx, dt) } +func (self *GuestChangeConfigTask) OnGuestStartCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { + self.SetStageFailed(ctx, data.String()) +} + func (self *GuestChangeConfigTask) markStageFailed(ctx context.Context, guest *models.SGuest, reason string) { guest.SetStatus(self.UserCred, api.VM_CHANGE_FLAVOR_FAIL, reason) db.OpsLog.LogEvent(guest, db.ACT_CHANGE_FLAVOR_FAIL, reason, self.UserCred) diff --git a/pkg/util/qcloud/instance.go b/pkg/util/qcloud/instance.go index 048c5167f7..b587a42d7a 100644 --- a/pkg/util/qcloud/instance.go +++ b/pkg/util/qcloud/instance.go @@ -559,7 +559,7 @@ func (self *SRegion) CreateInstance(name string, imageId string, instanceType st } func (self *SRegion) doStartVM(instanceId string) error { - return self.instanceOperation(instanceId, "StartInstances", nil, false) + return self.instanceOperation(instanceId, "StartInstances", nil, true) } func (self *SRegion) doStopVM(instanceId string, isForce bool) error {