diff --git a/pkg/compute/tasks/guest_detach_disk_task.go b/pkg/compute/tasks/guest_detach_disk_task.go index 83f552d0b8..4f9c3bf0bb 100644 --- a/pkg/compute/tasks/guest_detach_disk_task.go +++ b/pkg/compute/tasks/guest_detach_disk_task.go @@ -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()})) } } diff --git a/pkg/compute/tasks/guest_undeploy_task.go b/pkg/compute/tasks/guest_undeploy_task.go index ea954f0fca..78520d068f 100644 --- a/pkg/compute/tasks/guest_undeploy_task.go +++ b/pkg/compute/tasks/guest_undeploy_task.go @@ -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)