Merge pull request #1979 from wanyaoqi/bugfix/wyq/server-purge

bugfix: fix server purge
This commit is contained in:
yunion-ci-robot
2019-07-29 16:32:31 +08:00
committed by GitHub
3 changed files with 7 additions and 5 deletions
+3 -2
View File
@@ -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")
+2 -1
View File
@@ -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) {
+2 -2
View File
@@ -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 {