From db7183976b2202a0e4958e6be8df9b5d2fd10d1f Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Sat, 20 Oct 2018 13:14:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=EF=BC=9A=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E4=B8=BB=E6=9C=BA=E6=97=B6=EF=BC=8C=E5=9C=A8=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E4=B8=BB=E6=9C=BA=E6=97=B6=EF=BC=8C=E5=A6=82=E6=9E=9C=E5=AE=BF?= =?UTF-8?q?=E4=B8=BB=E6=9C=BA=E4=B8=8D=E5=93=8D=E5=BA=94=EF=BC=8C=E5=BA=94?= =?UTF-8?q?=E8=AF=A5=E5=AF=BC=E8=87=B4=E5=88=A0=E9=99=A4=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/guestdrivers/virtualization.go | 12 ++++++------ pkg/compute/tasks/guest_delete_task.go | 6 +++++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/pkg/compute/guestdrivers/virtualization.go b/pkg/compute/guestdrivers/virtualization.go index 2ed28aca95..04c1307f88 100644 --- a/pkg/compute/guestdrivers/virtualization.go +++ b/pkg/compute/guestdrivers/virtualization.go @@ -115,12 +115,12 @@ func (self *SVirtualizedGuestDriver) StartGuestSyncstatusTask(guest *models.SGue } func (self *SVirtualizedGuestDriver) RequestStopGuestForDelete(ctx context.Context, guest *models.SGuest, task taskman.ITask) error { - guestStatus, _ := task.GetParams().GetString("guest_status") - if guestStatus == models.VM_RUNNING { - host := guest.GetHost() - if host != nil && host.Enabled && host.HostStatus == models.HOST_ONLINE && !jsonutils.QueryBoolean(task.GetParams(), "purge", false) { - return guest.StartGuestStopTask(ctx, task.GetUserCred(), true, task.GetTaskId()) - } + host := guest.GetHost() + if host != nil && host.Enabled && host.HostStatus == models.HOST_ONLINE { + return guest.StartGuestStopTask(ctx, task.GetUserCred(), true, task.GetTaskId()) + } + if !jsonutils.QueryBoolean(task.GetParams(), "purge", false) { + return fmt.Errorf("fail to contact host") } task.ScheduleRun(nil) return nil diff --git a/pkg/compute/tasks/guest_delete_task.go b/pkg/compute/tasks/guest_delete_task.go index 5b5a8e5d51..01c6ac6a3d 100644 --- a/pkg/compute/tasks/guest_delete_task.go +++ b/pkg/compute/tasks/guest_delete_task.go @@ -26,7 +26,11 @@ func init() { func (self *GuestDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { guest := obj.(*models.SGuest) self.SetStage("on_guest_stop_complete", nil) - guest.GetDriver().RequestStopGuestForDelete(ctx, guest, self) + err := guest.GetDriver().RequestStopGuestForDelete(ctx, guest, self) + if err != nil { + errMsg := jsonutils.NewString(err.Error()) + self.OnGuestStopCompleteFailed(ctx, obj, errMsg) + } } func (self *GuestDeleteTask) OnGuestStopComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {