Merge pull request #2546 from ioito/hotfix/qx-guest-delete-fix

fix: 避免host disable时detach磁盘
This commit is contained in:
yunion-ci-robot
2019-08-28 15:57:14 +08:00
committed by GitHub
2 changed files with 20 additions and 9 deletions
+11 -9
View File
@@ -62,18 +62,20 @@ 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.Enabled && jsonutils.QueryBoolean(self.Params, "purge", false) {
purge = true
self.OnDetachDiskComplete(ctx, guest, nil)
return
}
if !purge {
self.SetStage("OnDetachDiskComplete", nil)
if err := guest.GetDriver().RequestDetachDisk(ctx, guest, disk, self); err != nil {
self.OnTaskFail(ctx, guest, disk, err)
}
} else {
self.OnDetachDiskComplete(ctx, guest, nil)
if !host.Enabled {
self.OnDetachDiskCompleteFailed(ctx, guest, jsonutils.Marshal(map[string]string{"error": fmt.Sprintf("host %s(%s) is disabled", host.Name, host.Id)}))
return
}
self.SetStage("OnDetachDiskComplete", nil)
err = guest.GetDriver().RequestDetachDisk(ctx, guest, disk, self)
if err != nil {
self.OnDetachDiskCompleteFailed(ctx, guest, jsonutils.Marshal(map[string]string{"error": err.Error()}))
}
}
+9
View File
@@ -16,6 +16,7 @@ package tasks
import (
"context"
"fmt"
"yunion.io/x/jsonutils"
@@ -48,6 +49,10 @@ func (self *GuestUndeployTask) OnInit(ctx context.Context, obj db.IStandaloneMod
host = models.HostManager.FetchHostById(targetHostId)
}
if host != nil {
if !host.Enabled {
self.OnStartDeleteGuestFail(ctx, fmt.Errorf("host %s(%s) is disabled", host.Name, host.Id))
return
}
err := guest.GetDriver().RequestUndeployGuestOnHost(ctx, guest, host, self)
if err != nil {
self.OnStartDeleteGuestFail(ctx, err)
@@ -61,6 +66,10 @@ func (self *GuestUndeployTask) OnMasterHostUndeployGuestComplete(ctx context.Con
self.SetStage("OnGuestUndeployComplete", nil)
host := models.HostManager.FetchHostById(guest.BackupHostId)
if host != nil {
if !host.Enabled {
self.OnStartDeleteGuestFail(ctx, fmt.Errorf("host %s(%s) is disabled", host.Name, host.Id))
return
}
err := guest.GetDriver().RequestUndeployGuestOnHost(ctx, guest, host, self)
if err != nil {
self.OnStartDeleteGuestFail(ctx, err)