Merge pull request #708 in YUNIONIO/onecloud from ~QUXUAN/onecloud:hotfix/qx-disk-delete to release/2.1.0

* commit '113af069fee4b217a775590929537042c41e2c28':
  磁盘删除失败处理
This commit is contained in:
邱剑
2018-12-10 20:01:19 +08:00
+9 -10
View File
@@ -8,7 +8,6 @@ import (
"yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
"yunion.io/x/onecloud/pkg/compute/models"
"yunion.io/x/onecloud/pkg/compute/options"
"yunion.io/x/onecloud/pkg/httperrors"
)
type DiskDeleteTask struct {
@@ -38,7 +37,7 @@ func (self *DiskDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneModel,
func (self *DiskDeleteTask) startDeleteDisk(ctx context.Context, disk *models.SDisk) {
db.OpsLog.LogEvent(disk, db.ACT_DELOCATING, disk.GetShortDesc(), self.UserCred)
if disk.Status == models.DISK_INIT {
self.OnGuestDiskDeleteSucc(ctx, disk, nil)
self.OnGuestDiskDeleteComplete(ctx, disk, nil)
return
}
storage := disk.GetStorage()
@@ -49,13 +48,13 @@ func (self *DiskDeleteTask) startDeleteDisk(ctx context.Context, disk *models.SD
}
disk.SetStatus(self.UserCred, models.DISK_DEALLOC, "")
if isPurge {
self.OnGuestDiskDeleteSucc(ctx, disk, nil)
self.OnGuestDiskDeleteComplete(ctx, disk, nil)
} else {
self.SetStage("on_guest_disk_delete_succ", nil)
self.SetStage("OnGuestDiskDeleteComplete", nil)
if host == nil {
self.OnGuestDiskDeleteFailed(ctx, disk, httperrors.NewNotFoundError("fail to find master host"))
self.OnGuestDiskDeleteCompleteFailed(ctx, disk, jsonutils.NewString("fail to find master host"))
} else if err := host.GetHostDriver().RequestDeallocateDiskOnHost(host, storage, disk, self); err != nil {
self.OnGuestDiskDeleteFailed(ctx, disk, err)
self.OnGuestDiskDeleteCompleteFailed(ctx, disk, jsonutils.NewString(err.Error()))
}
}
}
@@ -65,7 +64,7 @@ func (self *DiskDeleteTask) startPendingDeleteDisk(ctx context.Context, disk *mo
self.SetStageComplete(ctx, nil)
}
func (self *DiskDeleteTask) OnGuestDiskDeleteSucc(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
func (self *DiskDeleteTask) OnGuestDiskDeleteComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
if obj == nil {
self.SetStageComplete(ctx, nil)
return
@@ -77,8 +76,8 @@ func (self *DiskDeleteTask) OnGuestDiskDeleteSucc(ctx context.Context, obj db.IS
self.SetStageComplete(ctx, nil)
}
func (self *DiskDeleteTask) OnGuestDiskDeleteFailed(ctx context.Context, disk *models.SDisk, resion error) {
disk.SetStatus(self.GetUserCred(), models.DISK_DEALLOC_FAILED, resion.Error())
self.SetStageFailed(ctx, resion.Error())
func (self *DiskDeleteTask) OnGuestDiskDeleteCompleteFailed(ctx context.Context, disk *models.SDisk, resion jsonutils.JSONObject) {
disk.SetStatus(self.GetUserCred(), models.DISK_DEALLOC_FAILED, resion.String())
self.SetStageFailed(ctx, resion.String())
db.OpsLog.LogEvent(disk, db.ACT_DELOCATE_FAIL, disk.GetShortDesc(), self.GetUserCred())
}