From 8fe57af4a2831f55bca5dc97d0a9e02ab6fceb2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Sat, 5 Jan 2019 19:06:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=B8=E8=BD=BD=E7=A3=81=E7=9B=98=E6=97=B6?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=BAinit=E7=9A=84,=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E5=88=A0=E9=99=A4=E6=93=8D=E4=BD=9C,?= =?UTF-8?q?=E5=B9=B6=E7=9B=B4=E6=8E=A5=E8=AE=BE=E7=BD=AE=E7=A3=81=E7=9B=98?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9C=AA=E5=8D=B8=E8=BD=BD=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/guest_actions.go | 12 +++++++++--- pkg/compute/tasks/guest_detach_disk_task.go | 12 +----------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/pkg/compute/models/guest_actions.go b/pkg/compute/models/guest_actions.go index 97c4f885e0..763ded17dc 100644 --- a/pkg/compute/models/guest_actions.go +++ b/pkg/compute/models/guest_actions.go @@ -1199,12 +1199,18 @@ func (self *SGuest) PerformDetachdisk(ctx context.Context, userCred mcclient.Tok } func (self *SGuest) StartGuestDetachdiskTask(ctx context.Context, userCred mcclient.TokenCredential, disk *SDisk, keepDisk bool, parentTaskId string) error { - if disk.Status == DISK_INIT { - disk.SetStatus(userCred, DISK_DETACHING, "") - } taskData := jsonutils.NewDict() taskData.Add(jsonutils.NewString(disk.Id), "disk_id") taskData.Add(jsonutils.NewBool(keepDisk), "keep_disk") + if utils.IsInStringArray(disk.Status, []string{DISK_INIT, DISK_ALLOC_FAILED}) { + //删除非正常状态下的disk + taskData.Add(jsonutils.JSONFalse, "keep_disk") + disk.GetModelManager().TableSpec().Update(disk, func() error { + disk.AutoDelete = true + return nil + }) + } + disk.SetStatus(userCred, DISK_DETACHING, "") return self.GetDriver().StartGuestDetachdiskTask(ctx, userCred, self, taskData, "") } diff --git a/pkg/compute/tasks/guest_detach_disk_task.go b/pkg/compute/tasks/guest_detach_disk_task.go index 7a0b5495fe..d68ba87ff8 100644 --- a/pkg/compute/tasks/guest_detach_disk_task.go +++ b/pkg/compute/tasks/guest_detach_disk_task.go @@ -44,12 +44,6 @@ func (self *GuestDetachDiskTask) OnInit(ctx context.Context, obj db.IStandaloneM } guest.DetachDisk(ctx, disk, self.UserCred) - if disk.Status == models.DISK_INIT { - self.OnSyncConfigComplete(ctx, guest, nil) - return - } - disk.SetStatus(self.UserCred, models.DISK_DETACHING, "Disk detach") - host := guest.GetHost() purge := false if host != nil && host.Status == models.HOST_DISABLED && jsonutils.QueryBoolean(self.Params, "purge", false) { @@ -87,11 +81,7 @@ func (self *GuestDetachDiskTask) OnSyncConfigComplete(ctx context.Context, guest if host != nil && host.Status == models.HOST_DISABLED && jsonutils.QueryBoolean(self.Params, "purge", false) { purge = true } - if disk.Status == models.DISK_INIT { - db.OpsLog.LogEvent(disk, db.ACT_DELETE, "", self.UserCred) - disk.RealDelete(ctx, self.UserCred) - self.SetStageComplete(ctx, nil) - } else if (disk.Status != models.DISK_READY || !keepDisk) && disk.GetGuestDiskCount() == 0 && disk.AutoDelete { + if !keepDisk && disk.GetGuestDiskCount() == 0 && disk.AutoDelete { self.SetStage("on_disk_delete_complete", nil) db.OpsLog.LogEvent(disk, db.ACT_DELETE, "", self.UserCred) err := guest.GetDriver().RequestDeleteDetachedDisk(ctx, disk, self, purge)