mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #1979 from wanyaoqi/bugfix/wyq/server-purge
bugfix: fix server purge
This commit is contained in:
@@ -1445,7 +1445,7 @@ func (self *SGuest) PerformDetachdisk(ctx context.Context, userCred mcclient.Tok
|
||||
}
|
||||
if utils.IsInStringArray(self.Status, detachDiskStatus) {
|
||||
self.SetStatus(userCred, api.VM_DETACH_DISK, "")
|
||||
err = self.StartGuestDetachdiskTask(ctx, userCred, disk, keepDisk, "")
|
||||
err = self.StartGuestDetachdiskTask(ctx, userCred, disk, keepDisk, "", false)
|
||||
return nil, err
|
||||
} else {
|
||||
return nil, httperrors.NewInvalidStatusError("Server in %s not able to detach disk", self.Status)
|
||||
@@ -1457,10 +1457,11 @@ func (self *SGuest) PerformDetachdisk(ctx context.Context, userCred mcclient.Tok
|
||||
return nil, httperrors.NewResourceNotFoundError("Disk %s not found", diskId)
|
||||
}
|
||||
|
||||
func (self *SGuest) StartGuestDetachdiskTask(ctx context.Context, userCred mcclient.TokenCredential, disk *SDisk, keepDisk bool, parentTaskId string) error {
|
||||
func (self *SGuest) StartGuestDetachdiskTask(ctx context.Context, userCred mcclient.TokenCredential, disk *SDisk, keepDisk bool, parentTaskId string, purge bool) error {
|
||||
taskData := jsonutils.NewDict()
|
||||
taskData.Add(jsonutils.NewString(disk.Id), "disk_id")
|
||||
taskData.Add(jsonutils.NewBool(keepDisk), "keep_disk")
|
||||
taskData.Add(jsonutils.NewBool(purge), "purge")
|
||||
if utils.IsInStringArray(disk.Status, []string{api.DISK_INIT, api.DISK_ALLOC_FAILED}) {
|
||||
//删除非正常状态下的disk
|
||||
taskData.Add(jsonutils.JSONFalse, "keep_disk")
|
||||
|
||||
@@ -126,7 +126,8 @@ func (self *GuestDeleteTask) OnDiskDetachComplete(ctx context.Context, obj db.IS
|
||||
self.doClearSecurityGroupComplete(ctx, guest)
|
||||
return
|
||||
}
|
||||
guest.StartGuestDetachdiskTask(ctx, self.UserCred, lastDisk, true, self.GetTaskId())
|
||||
purge := jsonutils.QueryBoolean(self.Params, "purge", false)
|
||||
guest.StartGuestDetachdiskTask(ctx, self.UserCred, lastDisk, true, self.GetTaskId(), purge)
|
||||
}
|
||||
|
||||
func (self *GuestDeleteTask) OnDiskDetachCompleteFailed(ctx context.Context, obj db.IStandaloneModel, err jsonutils.JSONObject) {
|
||||
|
||||
@@ -63,7 +63,7 @@ func (self *GuestDetachDiskTask) OnInit(ctx context.Context, obj db.IStandaloneM
|
||||
guest.DetachDisk(ctx, disk, self.UserCred)
|
||||
host := guest.GetHost()
|
||||
purge := false
|
||||
if host != nil && host.Status == api.HOST_DISABLED && jsonutils.QueryBoolean(self.Params, "purge", false) {
|
||||
if host != nil && !host.Enabled && jsonutils.QueryBoolean(self.Params, "purge", false) {
|
||||
purge = true
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ func (self *GuestDetachDiskTask) OnDetachDiskComplete(ctx context.Context, guest
|
||||
keepDisk := jsonutils.QueryBoolean(self.Params, "keep_disk", true)
|
||||
host := guest.GetHost()
|
||||
purge := false
|
||||
if host != nil && host.Status == api.HOST_DISABLED && jsonutils.QueryBoolean(self.Params, "purge", false) {
|
||||
if host != nil && !host.Enabled && jsonutils.QueryBoolean(self.Params, "purge", false) {
|
||||
purge = true
|
||||
}
|
||||
if !keepDisk && disk.AutoDelete {
|
||||
|
||||
Reference in New Issue
Block a user