mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-01 15:07:17 +08:00
Merge pull request #897 in YUNIONIO/onecloud from ~QUXUAN/onecloud:hotfix/qx-detach-disk-status to release/2.4.0
* commit '8fe57af4a2831f55bca5dc97d0a9e02ab6fceb2e': 卸载磁盘时状态为init的,默认进行删除操作,并直接设置磁盘状态未卸载中
This commit is contained in:
@@ -1201,12 +1201,18 @@ func (self *SGuest) PerformDetachdisk(ctx context.Context, userCred mcclient.Tok
|
||||
}
|
||||
|
||||
func (self *SGuest) StartGuestDetachdiskTask(ctx context.Context, userCred mcclient.TokenCredential, disk *SDisk, keepDisk bool, parentTaskId string) error {
|
||||
if disk.Status == DISK_INIT {
|
||||
disk.SetStatus(userCred, DISK_DETACHING, "")
|
||||
}
|
||||
taskData := jsonutils.NewDict()
|
||||
taskData.Add(jsonutils.NewString(disk.Id), "disk_id")
|
||||
taskData.Add(jsonutils.NewBool(keepDisk), "keep_disk")
|
||||
if utils.IsInStringArray(disk.Status, []string{DISK_INIT, DISK_ALLOC_FAILED}) {
|
||||
//删除非正常状态下的disk
|
||||
taskData.Add(jsonutils.JSONFalse, "keep_disk")
|
||||
disk.GetModelManager().TableSpec().Update(disk, func() error {
|
||||
disk.AutoDelete = true
|
||||
return nil
|
||||
})
|
||||
}
|
||||
disk.SetStatus(userCred, DISK_DETACHING, "")
|
||||
return self.GetDriver().StartGuestDetachdiskTask(ctx, userCred, self, taskData, "")
|
||||
}
|
||||
|
||||
|
||||
@@ -44,12 +44,6 @@ func (self *GuestDetachDiskTask) OnInit(ctx context.Context, obj db.IStandaloneM
|
||||
}
|
||||
|
||||
guest.DetachDisk(ctx, disk, self.UserCred)
|
||||
if disk.Status == models.DISK_INIT {
|
||||
self.OnSyncConfigComplete(ctx, guest, nil)
|
||||
return
|
||||
}
|
||||
disk.SetStatus(self.UserCred, models.DISK_DETACHING, "Disk detach")
|
||||
|
||||
host := guest.GetHost()
|
||||
purge := false
|
||||
if host != nil && host.Status == models.HOST_DISABLED && jsonutils.QueryBoolean(self.Params, "purge", false) {
|
||||
@@ -87,11 +81,7 @@ func (self *GuestDetachDiskTask) OnSyncConfigComplete(ctx context.Context, guest
|
||||
if host != nil && host.Status == models.HOST_DISABLED && jsonutils.QueryBoolean(self.Params, "purge", false) {
|
||||
purge = true
|
||||
}
|
||||
if disk.Status == models.DISK_INIT {
|
||||
db.OpsLog.LogEvent(disk, db.ACT_DELETE, "", self.UserCred)
|
||||
disk.RealDelete(ctx, self.UserCred)
|
||||
self.SetStageComplete(ctx, nil)
|
||||
} else if (disk.Status != models.DISK_READY || !keepDisk) && disk.GetGuestDiskCount() == 0 && disk.AutoDelete {
|
||||
if !keepDisk && disk.GetGuestDiskCount() == 0 && disk.AutoDelete {
|
||||
self.SetStage("on_disk_delete_complete", nil)
|
||||
db.OpsLog.LogEvent(disk, db.ACT_DELETE, "", self.UserCred)
|
||||
err := guest.GetDriver().RequestDeleteDetachedDisk(ctx, disk, self, purge)
|
||||
|
||||
Reference in New Issue
Block a user