Merge pull request #676 in YUNIONIO/onecloud from ~QUXUAN/onecloud:hotfix/qx-conflict-2.4.0 to release/2.4.0

* commit '42d8faf7684d0dc6f5cc00b64d8cd39d28828317':
  冲突解决
  补充其他任务失败后标记任务失败
  补充deploy任务失败处理
This commit is contained in:
邱剑
2018-12-05 14:59:16 +08:00
6 changed files with 25 additions and 12 deletions
+4 -3
View File
@@ -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 jsonutils.JSONObject) {
disk.SetDiskReady(ctx, self.GetUserCred(), reason.String())
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.String(), self.UserCred, false)
logclient.AddActionLog(disk, logclient.ACT_RESIZE, data.String(), self.UserCred, false)
self.SetStageFailed(ctx, data.String())
}
+1
View File
@@ -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) {
+9
View File
@@ -127,16 +127,25 @@ 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())
}
type GuestDeployBackupTask struct {
GuestDeployTask
}
@@ -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) {
+9 -9
View File
@@ -68,7 +68,7 @@ func (self *GuestStartTask) RequestStart(ctx context.Context, guest *models.SGue
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")
@@ -84,7 +84,7 @@ func (self *GuestStartTask) RequestStartBacking(ctx context.Context, guest *mode
guest.SetStatus(self.UserCred, models.VM_BACKUP_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) {
self.OnStartBackupGuestComplete(ctx, guest, nil)
@@ -100,13 +100,17 @@ func (self *GuestStartTask) OnStartBackupGuestComplete(ctx context.Context, gues
nbdServerUri := fmt.Sprintf("nbd:%s:%d", backupHost.AccessIp, nbdServerPort)
guest.SetMetadata(ctx, "backup_nbd_server_uri", nbdServerUri, self.UserCred)
} else {
self.onStartGuestFailed(ctx, guest, fmt.Errorf("Start backup guest result missing nbd_server_port"))
self.OnStartCompleteFailed(ctx, guest, jsonutils.NewString("Start backup guest result missing nbd_server_port"))
return
}
}
self.RequestStart(ctx, guest)
}
func (self *GuestStartTask) OnStartBackupGuestCompleteFailed(ctx context.Context, guest *models.SGuest, data jsonutils.JSONObject) {
self.OnStartCompleteFailed(ctx, guest, data)
}
func (self *GuestStartTask) OnStartComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
guest := obj.(*models.SGuest)
db.OpsLog.LogEvent(guest, db.ACT_START, guest.GetShortDesc(), self.UserCred)
@@ -123,14 +127,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) {
+1
View File
@@ -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) {