From 36b2c2267b33ce93e27410eb2e38fc089c78675d Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Mon, 16 Mar 2020 11:02:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=81=BF=E5=85=8D=E9=87=8D=E8=A3=85?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E5=A4=B1=E8=B4=A5=E5=90=8EimageId=E4=BE=9D?= =?UTF-8?q?=E7=84=B6=E5=8F=91=E7=94=9F=E6=94=B9=E5=8F=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/tasks/guest_rebuild_root_task.go | 22 ++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/pkg/compute/tasks/guest_rebuild_root_task.go b/pkg/compute/tasks/guest_rebuild_root_task.go index 642cb0cffd..70e90ed376 100644 --- a/pkg/compute/tasks/guest_rebuild_root_task.go +++ b/pkg/compute/tasks/guest_rebuild_root_task.go @@ -56,16 +56,15 @@ func (self *GuestRebuildRootTask) OnStopServerComplete(ctx context.Context, gues func (self *GuestRebuildRootTask) markFailed(ctx context.Context, guest *models.SGuest, reason string) { logclient.AddActionLogWithStartable(self, guest, logclient.ACT_VM_REBUILD, reason, self.UserCred, false) + guest.SetStatus(self.GetUserCred(), api.VM_REBUILD_ROOT_FAIL, reason) self.SGuestBaseTask.SetStageFailed(ctx, reason) } func (self *GuestRebuildRootTask) StartRebuildRootDisk(ctx context.Context, guest *models.SGuest) { db.OpsLog.LogEvent(guest, db.ACT_REBUILDING_ROOT, nil, self.UserCred) gds := guest.CategorizeDisks() - imageId, _ := self.Params.GetString("image_id") oldStatus := gds.Root.Status _, err := db.Update(gds.Root, func() error { - gds.Root.TemplateId = imageId gds.Root.Status = api.DISK_REBUILD return nil }) @@ -91,6 +90,17 @@ func (self *GuestRebuildRootTask) StartRebuildRootDisk(ctx context.Context, gues } func (self *GuestRebuildRootTask) OnRebuildRootDiskComplete(ctx context.Context, guest *models.SGuest, data jsonutils.JSONObject) { + gds := guest.CategorizeDisks() + imageId, _ := self.Params.GetString("image_id") + _, err := db.Update(gds.Root, func() error { + gds.Root.TemplateId = imageId + return nil + }) + if err != nil { + self.markFailed(ctx, guest, err.Error()) + return + } + allDisks := jsonutils.QueryBoolean(self.Params, "all_disks", false) if allDisks { guestdisks := guest.GetDisks() @@ -229,6 +239,10 @@ func (self *KVMGuestRebuildRootTask) OnGuestDeployComplete(ctx context.Context, // logclient.AddActionLogWithStartable(self, guest, logclient.ACT_VM_REBUILD, nil, self.UserCred, true) } +func (self *KVMGuestRebuildRootTask) OnGuestDeployCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { + self.SetStageFailed(ctx, data.String()) +} + type ManagedGuestRebuildRootTask struct { SGuestBaseTask } @@ -258,3 +272,7 @@ func (self *ManagedGuestRebuildRootTask) OnHostCacheImageCompleteFailed(ctx cont func (self *ManagedGuestRebuildRootTask) OnGuestDeployComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { self.SetStageComplete(ctx, nil) } + +func (self *ManagedGuestRebuildRootTask) OnGuestDeployCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { + self.SetStageFailed(ctx, data.String()) +}