mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-01 15:07:17 +08:00
fix(region): detach all snapshotpolicy when realdeleting disk
This commit is contained in:
@@ -1848,6 +1848,10 @@ func (self *SDisk) Delete(ctx context.Context, userCred mcclient.TokenCredential
|
||||
}
|
||||
|
||||
func (self *SDisk) RealDelete(ctx context.Context, userCred mcclient.TokenCredential) error {
|
||||
err := self.DetachAllSnapshotpolicies(ctx, userCred)
|
||||
if err != nil {
|
||||
log.Errorf("unable to DetachAllSnapshotpolicies: %v", err)
|
||||
}
|
||||
return self.SVirtualResourceBase.Delete(ctx, userCred)
|
||||
}
|
||||
|
||||
|
||||
@@ -149,12 +149,7 @@ func (disk *SDisk) purge(ctx context.Context, userCred mcclient.TokenCredential)
|
||||
lockman.LockObject(ctx, disk)
|
||||
defer lockman.ReleaseObject(ctx, disk)
|
||||
|
||||
err := disk.DetachAllSnapshotpolicies(ctx, userCred)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "disk.DetachAllSnapshotpolicies")
|
||||
}
|
||||
|
||||
err = disk.ValidatePurgeCondition(ctx)
|
||||
err := disk.ValidatePurgeCondition(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -179,7 +179,6 @@ func (self *DiskDeleteTask) OnGuestDiskDeleteComplete(ctx context.Context, obj d
|
||||
if len(disk.SnapshotId) > 0 && disk.GetMetadata("merge_snapshot", nil) == "true" {
|
||||
models.SnapshotManager.AddRefCount(disk.SnapshotId, -1)
|
||||
}
|
||||
disk.DetachAllSnapshotpolicies(ctx, self.UserCred)
|
||||
disk.RealDelete(ctx, self.UserCred)
|
||||
self.SetStageComplete(ctx, nil)
|
||||
}
|
||||
|
||||
@@ -80,14 +80,6 @@ func (self *GuestDetachDiskTask) OnDetachDiskComplete(ctx context.Context, guest
|
||||
return
|
||||
}
|
||||
disk := objDisk.(*models.SDisk)
|
||||
// detach disk and snapshotpolicy if hypervisor is kvm
|
||||
if guest.Hypervisor == api.HYPERVISOR_KVM {
|
||||
err := disk.DetachAllSnapshotpolicies(ctx, self.UserCred)
|
||||
if err != nil {
|
||||
self.OnTaskFail(ctx, guest, nil, jsonutils.NewString(fmt.Sprintf("detach all snapshotpolicies failed: %s", err.Error())))
|
||||
return
|
||||
}
|
||||
}
|
||||
disk.SetStatus(self.UserCred, api.DISK_READY, "on detach disk complete")
|
||||
keepDisk := jsonutils.QueryBoolean(self.Params, "keep_disk", true)
|
||||
host := guest.GetHost()
|
||||
|
||||
Reference in New Issue
Block a user