mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 06:09:39 +08:00
fix: cancel pending-delete should increase resource quota usages
This commit is contained in:
@@ -246,9 +246,12 @@ func (gi *SGuestImage) AllowPerformCancelDelete(ctx context.Context, userCred mc
|
||||
func (gi *SGuestImage) PerformCancelDelete(ctx context.Context, userCred mcclient.TokenCredential,
|
||||
query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) {
|
||||
|
||||
if gi.PendingDeleted {
|
||||
if gi.PendingDeleted && !gi.Deleted {
|
||||
err := gi.DoCancelPendingDelete(ctx, userCred)
|
||||
return nil, err
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "DoCancelPendingDelete")
|
||||
}
|
||||
gi.RecoverUsages(ctx, userCred)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
@@ -635,3 +638,21 @@ func (manager *SGuestImageManager) Usage(scope rbacutils.TRbacScope, ownerId mcc
|
||||
|
||||
return usages
|
||||
}
|
||||
|
||||
func (gi *SGuestImage) GetUsages() []db.IUsage {
|
||||
if gi.PendingDeleted || gi.Deleted {
|
||||
return nil
|
||||
}
|
||||
images, err := GuestImageJointManager.GetImagesByGuestImageId(gi.Id)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
usages := make([]db.IUsage, 0)
|
||||
for i := range images {
|
||||
ui := images[i].GetUsages()
|
||||
if len(ui) > 0 {
|
||||
usages = append(usages, ui...)
|
||||
}
|
||||
}
|
||||
return usages
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ package models
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
|
||||
"yunion.io/x/pkg/errors"
|
||||
"yunion.io/x/sqlchemy"
|
||||
@@ -102,7 +103,7 @@ func (gm *SGuestImageJointManager) GetImagesByFilter(guestImageId string,
|
||||
q = filter(q)
|
||||
images := make([]SImage, 0, len(imageIds))
|
||||
err = db.FetchModelObjects(ImageManager, q, &images)
|
||||
if err != nil {
|
||||
if err != nil && errors.Cause(err) != sql.ErrNoRows {
|
||||
return nil, errors.Wrap(err, "fetch images failed")
|
||||
}
|
||||
return images, nil
|
||||
|
||||
@@ -806,9 +806,12 @@ func (self *SImage) AllowPerformCancelDelete(ctx context.Context, userCred mccli
|
||||
}
|
||||
|
||||
func (self *SImage) PerformCancelDelete(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) {
|
||||
if self.PendingDeleted {
|
||||
if self.PendingDeleted && !self.Deleted {
|
||||
err := self.DoCancelPendingDelete(ctx, userCred)
|
||||
return nil, err
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "DoCancelPendingDelete")
|
||||
}
|
||||
self.RecoverUsages(ctx, userCred)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user