mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-01 15:07:17 +08:00
Merge pull request #2546 from ioito/hotfix/qx-guest-delete-fix
fix: 避免host disable时detach磁盘
This commit is contained in:
@@ -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()}))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user