From 1c4053bb4c9fc2cf571051ed0d9b2c6c8f4cb0cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Wed, 5 Dec 2018 14:06:30 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=A1=A5=E5=85=85deploy=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/tasks/guest_deploy_task.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkg/compute/tasks/guest_deploy_task.go b/pkg/compute/tasks/guest_deploy_task.go index b2156a763a..9f4d82d345 100644 --- a/pkg/compute/tasks/guest_deploy_task.go +++ b/pkg/compute/tasks/guest_deploy_task.go @@ -99,12 +99,19 @@ func (self *GuestDeployTask) OnDeployGuestComplete(ctx context.Context, obj db.I func (self *GuestDeployTask) OnDeployGuestCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { guest := obj.(*models.SGuest) guest.SetStatus(self.UserCred, models.VM_DEPLOY_FAILED, data.String()) + self.SetStageFailed(ctx, data.String()) } func (self *GuestDeployTask) OnDeployStartGuestComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { self.SetStageComplete(ctx, nil) } +func (self *GuestDeployTask) OnDeployStartGuestCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { + guest := obj.(*models.SGuest) + guest.SetStatus(self.UserCred, models.VM_START_FAILED, data.String()) + self.SetStageFailed(ctx, data.String()) +} + func (self *GuestDeployTask) OnDeployGuestSyncstatusComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { self.SetStageComplete(ctx, nil) } From 517357ec063ac2b9b35d10c4af49d8534071466b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Wed, 5 Dec 2018 14:21:29 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=A4=B1=E8=B4=A5=E5=90=8E=E6=A0=87=E8=AE=B0?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/tasks/disk_resize_task.go | 5 +++-- pkg/compute/tasks/disk_save_task.go | 1 + pkg/compute/tasks/guest_create_task.go | 1 + pkg/compute/tasks/guest_deploy_task.go | 6 ++++-- pkg/compute/tasks/guest_rebuild_root_task.go | 4 ++-- pkg/compute/tasks/guest_start_task.go | 10 +++------- pkg/compute/tasks/guest_suspend_task.go | 1 + 7 files changed, 15 insertions(+), 13 deletions(-) diff --git a/pkg/compute/tasks/disk_resize_task.go b/pkg/compute/tasks/disk_resize_task.go index dd25da5879..289bf32537 100644 --- a/pkg/compute/tasks/disk_resize_task.go +++ b/pkg/compute/tasks/disk_resize_task.go @@ -103,7 +103,8 @@ func (self *DiskResizeTask) OnDiskResizeComplete(ctx context.Context, disk *mode self.finalReleasePendingUsage(ctx) } -func (self *DiskResizeTask) OnDiskResizeCompleteFailed(ctx context.Context, disk *models.SDisk, resion error) { - disk.SetDiskReady(ctx, self.GetUserCred(), resion.Error()) +func (self *DiskResizeTask) OnDiskResizeCompleteFailed(ctx context.Context, disk *models.SDisk, data jsonutils.JSONObject) { + disk.SetDiskReady(ctx, self.GetUserCred(), data.String()) db.OpsLog.LogEvent(disk, db.ACT_RESIZE_FAIL, disk.GetShortDesc(), self.UserCred) + self.SetStageFailed(ctx, data.String()) } diff --git a/pkg/compute/tasks/disk_save_task.go b/pkg/compute/tasks/disk_save_task.go index 8990ae8ff2..28f4fb3209 100644 --- a/pkg/compute/tasks/disk_save_task.go +++ b/pkg/compute/tasks/disk_save_task.go @@ -66,6 +66,7 @@ func (self *DiskSaveTask) StartBackupDisk(ctx context.Context, disk *models.SDis func (self *DiskSaveTask) OnDiskBackupCompleteFailed(ctx context.Context, disk *models.SDisk, data jsonutils.JSONObject) { disk.SetDiskReady(ctx, self.GetUserCred(), data.String()) db.OpsLog.LogEvent(disk, db.ACT_SAVE_FAIL, data.String(), self.GetUserCred()) + self.SetStageFailed(ctx, data.String()) } func (self *DiskSaveTask) OnDiskBackupComplete(ctx context.Context, disk *models.SDisk, data *jsonutils.JSONDict) { diff --git a/pkg/compute/tasks/guest_create_task.go b/pkg/compute/tasks/guest_create_task.go index 0906f65072..ff655d6de4 100644 --- a/pkg/compute/tasks/guest_create_task.go +++ b/pkg/compute/tasks/guest_create_task.go @@ -107,6 +107,7 @@ func (self *GuestCreateTask) OnDeployGuestDescCompleteFailed(ctx context.Context db.OpsLog.LogEvent(guest, db.ACT_ALLOCATE_FAIL, data, self.UserCred) logclient.AddActionLog(guest, logclient.ACT_ALLOCATE, data, self.UserCred, false) notifyclient.NotifySystemError(guest.Id, guest.Name, models.VM_DEPLOY_FAILED, data.String()) + self.SetStageFailed(ctx, data.String()) } func (self *GuestCreateTask) OnAutoStartGuest(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { diff --git a/pkg/compute/tasks/guest_deploy_task.go b/pkg/compute/tasks/guest_deploy_task.go index 9f4d82d345..144756548c 100644 --- a/pkg/compute/tasks/guest_deploy_task.go +++ b/pkg/compute/tasks/guest_deploy_task.go @@ -107,11 +107,13 @@ func (self *GuestDeployTask) OnDeployStartGuestComplete(ctx context.Context, obj } func (self *GuestDeployTask) OnDeployStartGuestCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { - guest := obj.(*models.SGuest) - guest.SetStatus(self.UserCred, models.VM_START_FAILED, data.String()) self.SetStageFailed(ctx, data.String()) } func (self *GuestDeployTask) OnDeployGuestSyncstatusComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { self.SetStageComplete(ctx, nil) } + +func (self *GuestDeployTask) OnDeployGuestSyncstatusCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { + self.SetStageFailed(ctx, data.String()) +} diff --git a/pkg/compute/tasks/guest_rebuild_root_task.go b/pkg/compute/tasks/guest_rebuild_root_task.go index cda52cf983..5ff2969281 100644 --- a/pkg/compute/tasks/guest_rebuild_root_task.go +++ b/pkg/compute/tasks/guest_rebuild_root_task.go @@ -111,6 +111,7 @@ func (self *GuestRebuildRootTask) OnRebuildRootDiskCompleteFailed(ctx context.Co db.OpsLog.LogEvent(guest, db.ACT_REBUILD_ROOT_FAIL, data, self.UserCred) guest.SetStatus(self.UserCred, models.VM_REBUILD_ROOT_FAIL, "") logclient.AddActionLog(guest, logclient.ACT_VM_REBUILD, data, self.UserCred, false) + self.SetStageFailed(ctx, data.String()) } func (self *GuestRebuildRootTask) OnSyncStatusComplete(ctx context.Context, guest *models.SGuest, data jsonutils.JSONObject) { @@ -166,7 +167,6 @@ func (self *KVMGuestRebuildRootTask) OnGuestDeployComplete(ctx context.Context, logclient.AddActionLog(guest, logclient.ACT_VM_REBUILD, nil, self.UserCred, true) } - type ManagedGuestRebuildRootTask struct { SGuestBaseTask } @@ -200,4 +200,4 @@ func (self *ManagedGuestRebuildRootTask) OnHostCacheImageCompleteFailed(ctx cont func (self *ManagedGuestRebuildRootTask) OnGuestDeployComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { self.SetStageComplete(ctx, nil) -} \ No newline at end of file +} diff --git a/pkg/compute/tasks/guest_start_task.go b/pkg/compute/tasks/guest_start_task.go index 99dae67cf3..55090fa0d3 100644 --- a/pkg/compute/tasks/guest_start_task.go +++ b/pkg/compute/tasks/guest_start_task.go @@ -45,7 +45,7 @@ func (self *GuestStartTask) startStart(ctx context.Context, guest *models.SGuest guest.SetStatus(self.UserCred, models.VM_STARTING, "") result, err := guest.GetDriver().RequestStartOnHost(ctx, guest, host, self.UserCred, self) if err != nil { - self.onStartGuestFailed(ctx, guest, err) + self.OnStartCompleteFailed(ctx, guest, jsonutils.NewString(err.Error())) } else { if result != nil && jsonutils.QueryBoolean(result, "is_running", false) { guest.SetStatus(self.UserCred, models.VM_RUNNING, "start") @@ -70,14 +70,10 @@ func (self *GuestStartTask) OnGuestSyncstatusAfterStart(ctx context.Context, obj func (self *GuestStartTask) OnStartCompleteFailed(ctx context.Context, obj db.IStandaloneModel, err jsonutils.JSONObject) { guest := obj.(*models.SGuest) + guest.SetStatus(self.UserCred, models.VM_START_FAILED, err.String()) db.OpsLog.LogEvent(guest, db.ACT_START_FAIL, err, self.UserCred) -} - -func (self *GuestStartTask) onStartGuestFailed(ctx context.Context, guest *models.SGuest, err error) { - guest.SetStatus(self.UserCred, models.VM_START_FAILED, err.Error()) - self.SetStageFailed(ctx, err.Error()) - self.OnStartCompleteFailed(ctx, guest, jsonutils.NewString(err.Error())) logclient.AddActionLog(guest, logclient.ACT_VM_START, err, self.UserCred, false) + self.SetStageFailed(ctx, err.String()) } func (self *GuestStartTask) taskComplete(ctx context.Context, guest *models.SGuest) { diff --git a/pkg/compute/tasks/guest_suspend_task.go b/pkg/compute/tasks/guest_suspend_task.go index 13023f12f3..54c192ea3f 100644 --- a/pkg/compute/tasks/guest_suspend_task.go +++ b/pkg/compute/tasks/guest_suspend_task.go @@ -40,6 +40,7 @@ func (self *GuestSuspendTask) OnSuspendCompleteFailed(ctx context.Context, obj d guest := obj.(*models.SGuest) guest.SetStatus(self.UserCred, models.VM_RUNNING, "") db.OpsLog.LogEvent(guest, db.ACT_STOP_FAIL, err.String(), self.UserCred) + self.SetStageFailed(ctx, err.String()) } func (self *GuestSuspendTask) OnSuspendGuestFail(guest *models.SGuest, reason string) { From 05ebba4ab605863c72df9fca2c089da14c01cd46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Wed, 5 Dec 2018 14:42:16 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=86=B2=E7=AA=81=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/tasks/disk_resize_task.go | 7 ++++--- pkg/compute/tasks/disk_save_task.go | 1 + pkg/compute/tasks/guest_deploy_task.go | 9 +++++++++ pkg/compute/tasks/guest_rebuild_root_task.go | 1 + pkg/compute/tasks/guest_start_task.go | 10 +++------- pkg/compute/tasks/guest_suspend_task.go | 1 + 6 files changed, 19 insertions(+), 10 deletions(-) diff --git a/pkg/compute/tasks/disk_resize_task.go b/pkg/compute/tasks/disk_resize_task.go index 3fff258569..ad672b14ad 100644 --- a/pkg/compute/tasks/disk_resize_task.go +++ b/pkg/compute/tasks/disk_resize_task.go @@ -107,8 +107,9 @@ func (self *DiskResizeTask) OnDiskResizeComplete(ctx context.Context, disk *mode self.finalReleasePendingUsage(ctx) } -func (self *DiskResizeTask) OnDiskResizeCompleteFailed(ctx context.Context, disk *models.SDisk, reason error) { - disk.SetDiskReady(ctx, self.GetUserCred(), reason.Error()) +func (self *DiskResizeTask) OnDiskResizeCompleteFailed(ctx context.Context, disk *models.SDisk, data jsonutils.JSONObject) { + disk.SetDiskReady(ctx, self.GetUserCred(), data.String()) db.OpsLog.LogEvent(disk, db.ACT_RESIZE_FAIL, disk.GetShortDesc(), self.UserCred) - logclient.AddActionLog(disk, logclient.ACT_RESIZE, reason.Error(), self.UserCred, false) + logclient.AddActionLog(disk, logclient.ACT_RESIZE, data.String(), self.UserCred, false) + self.SetStageFailed(ctx, data.String()) } diff --git a/pkg/compute/tasks/disk_save_task.go b/pkg/compute/tasks/disk_save_task.go index 8990ae8ff2..28f4fb3209 100644 --- a/pkg/compute/tasks/disk_save_task.go +++ b/pkg/compute/tasks/disk_save_task.go @@ -66,6 +66,7 @@ func (self *DiskSaveTask) StartBackupDisk(ctx context.Context, disk *models.SDis func (self *DiskSaveTask) OnDiskBackupCompleteFailed(ctx context.Context, disk *models.SDisk, data jsonutils.JSONObject) { disk.SetDiskReady(ctx, self.GetUserCred(), data.String()) db.OpsLog.LogEvent(disk, db.ACT_SAVE_FAIL, data.String(), self.GetUserCred()) + self.SetStageFailed(ctx, data.String()) } func (self *DiskSaveTask) OnDiskBackupComplete(ctx context.Context, disk *models.SDisk, data *jsonutils.JSONDict) { diff --git a/pkg/compute/tasks/guest_deploy_task.go b/pkg/compute/tasks/guest_deploy_task.go index b2156a763a..144756548c 100644 --- a/pkg/compute/tasks/guest_deploy_task.go +++ b/pkg/compute/tasks/guest_deploy_task.go @@ -99,12 +99,21 @@ func (self *GuestDeployTask) OnDeployGuestComplete(ctx context.Context, obj db.I func (self *GuestDeployTask) OnDeployGuestCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { guest := obj.(*models.SGuest) guest.SetStatus(self.UserCred, models.VM_DEPLOY_FAILED, data.String()) + self.SetStageFailed(ctx, data.String()) } func (self *GuestDeployTask) OnDeployStartGuestComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { self.SetStageComplete(ctx, nil) } +func (self *GuestDeployTask) OnDeployStartGuestCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { + self.SetStageFailed(ctx, data.String()) +} + func (self *GuestDeployTask) OnDeployGuestSyncstatusComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { self.SetStageComplete(ctx, nil) } + +func (self *GuestDeployTask) OnDeployGuestSyncstatusCompleteFailed(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { + self.SetStageFailed(ctx, data.String()) +} diff --git a/pkg/compute/tasks/guest_rebuild_root_task.go b/pkg/compute/tasks/guest_rebuild_root_task.go index 65fd05f6bc..5ff2969281 100644 --- a/pkg/compute/tasks/guest_rebuild_root_task.go +++ b/pkg/compute/tasks/guest_rebuild_root_task.go @@ -111,6 +111,7 @@ func (self *GuestRebuildRootTask) OnRebuildRootDiskCompleteFailed(ctx context.Co db.OpsLog.LogEvent(guest, db.ACT_REBUILD_ROOT_FAIL, data, self.UserCred) guest.SetStatus(self.UserCred, models.VM_REBUILD_ROOT_FAIL, "") logclient.AddActionLog(guest, logclient.ACT_VM_REBUILD, data, self.UserCred, false) + self.SetStageFailed(ctx, data.String()) } func (self *GuestRebuildRootTask) OnSyncStatusComplete(ctx context.Context, guest *models.SGuest, data jsonutils.JSONObject) { diff --git a/pkg/compute/tasks/guest_start_task.go b/pkg/compute/tasks/guest_start_task.go index 99dae67cf3..55090fa0d3 100644 --- a/pkg/compute/tasks/guest_start_task.go +++ b/pkg/compute/tasks/guest_start_task.go @@ -45,7 +45,7 @@ func (self *GuestStartTask) startStart(ctx context.Context, guest *models.SGuest guest.SetStatus(self.UserCred, models.VM_STARTING, "") result, err := guest.GetDriver().RequestStartOnHost(ctx, guest, host, self.UserCred, self) if err != nil { - self.onStartGuestFailed(ctx, guest, err) + self.OnStartCompleteFailed(ctx, guest, jsonutils.NewString(err.Error())) } else { if result != nil && jsonutils.QueryBoolean(result, "is_running", false) { guest.SetStatus(self.UserCred, models.VM_RUNNING, "start") @@ -70,14 +70,10 @@ func (self *GuestStartTask) OnGuestSyncstatusAfterStart(ctx context.Context, obj func (self *GuestStartTask) OnStartCompleteFailed(ctx context.Context, obj db.IStandaloneModel, err jsonutils.JSONObject) { guest := obj.(*models.SGuest) + guest.SetStatus(self.UserCred, models.VM_START_FAILED, err.String()) db.OpsLog.LogEvent(guest, db.ACT_START_FAIL, err, self.UserCred) -} - -func (self *GuestStartTask) onStartGuestFailed(ctx context.Context, guest *models.SGuest, err error) { - guest.SetStatus(self.UserCred, models.VM_START_FAILED, err.Error()) - self.SetStageFailed(ctx, err.Error()) - self.OnStartCompleteFailed(ctx, guest, jsonutils.NewString(err.Error())) logclient.AddActionLog(guest, logclient.ACT_VM_START, err, self.UserCred, false) + self.SetStageFailed(ctx, err.String()) } func (self *GuestStartTask) taskComplete(ctx context.Context, guest *models.SGuest) { diff --git a/pkg/compute/tasks/guest_suspend_task.go b/pkg/compute/tasks/guest_suspend_task.go index 13023f12f3..54c192ea3f 100644 --- a/pkg/compute/tasks/guest_suspend_task.go +++ b/pkg/compute/tasks/guest_suspend_task.go @@ -40,6 +40,7 @@ func (self *GuestSuspendTask) OnSuspendCompleteFailed(ctx context.Context, obj d guest := obj.(*models.SGuest) guest.SetStatus(self.UserCred, models.VM_RUNNING, "") db.OpsLog.LogEvent(guest, db.ACT_STOP_FAIL, err.String(), self.UserCred) + self.SetStageFailed(ctx, err.String()) } func (self *GuestSuspendTask) OnSuspendGuestFail(guest *models.SGuest, reason string) {