mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Merge pull request #5648 from swordqiu/hotfix/qj-cancel-quota-no-save-usage
fix: cancel pending usage might not need to update usage
This commit is contained in:
@@ -1659,7 +1659,7 @@ func objectUpdateSpec(dispatcher *DBModelDispatcher, model IModel, modelValue re
|
||||
|
||||
func DeleteModel(ctx context.Context, userCred mcclient.TokenCredential, item IModel) error {
|
||||
// log.Debugf("Ready to delete %s %s %#v", jsonutils.Marshal(item), item, manager)
|
||||
cleanModelUsages(ctx, userCred, item)
|
||||
// cleanModelUsages(ctx, userCred, item)
|
||||
_, err := Update(item, func() error {
|
||||
return item.MarkDelete()
|
||||
})
|
||||
|
||||
@@ -74,7 +74,8 @@ func cancelPendingUsagesInContext(ctx context.Context, userCred mcclient.TokenCr
|
||||
}
|
||||
errs := make([]error, 0)
|
||||
for i := range quotas {
|
||||
err := CancelPendingUsage(ctx, userCred, quotas[i], quotas[i])
|
||||
// cancel and do not save pending usage
|
||||
err := CancelPendingUsage(ctx, userCred, quotas[i], quotas[i], false)
|
||||
if err != nil {
|
||||
errs = append(errs, errors.Wrapf(err, "CancelPendingUsage %s", jsonutils.Marshal(quotas[i])))
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ type IQuotaManager interface {
|
||||
db.IResourceModelManager
|
||||
|
||||
checkSetPendingQuota(ctx context.Context, userCred mcclient.TokenCredential, quota IQuota) error
|
||||
cancelPendingUsage(ctx context.Context, userCred mcclient.TokenCredential, localUsage IQuota, cancelUsage IQuota) error
|
||||
cancelPendingUsage(ctx context.Context, userCred mcclient.TokenCredential, localUsage IQuota, cancelUsage IQuota, save bool) error
|
||||
cancelUsage(ctx context.Context, userCred mcclient.TokenCredential, usage IQuota) error
|
||||
getQuotaCount(ctx context.Context, request IQuota, pendingKey IQuotaKeys) (int, error)
|
||||
|
||||
|
||||
@@ -66,14 +66,14 @@ func (manager *SQuotaBaseManager) _cleanPendingUsage(ctx context.Context, userCr
|
||||
return nil
|
||||
}
|
||||
|
||||
func (manager *SQuotaBaseManager) cancelPendingUsage(ctx context.Context, userCred mcclient.TokenCredential, localUsage IQuota, cancelUsage IQuota) error {
|
||||
func (manager *SQuotaBaseManager) cancelPendingUsage(ctx context.Context, userCred mcclient.TokenCredential, localUsage IQuota, cancelUsage IQuota, save bool) error {
|
||||
LockQuota(ctx, manager, localUsage)
|
||||
defer ReleaseQuota(ctx, manager, localUsage)
|
||||
|
||||
return manager._cancelPendingUsage(ctx, userCred, localUsage, cancelUsage)
|
||||
return manager._cancelPendingUsage(ctx, userCred, localUsage, cancelUsage, save)
|
||||
}
|
||||
|
||||
func (manager *SQuotaBaseManager) _cancelPendingUsage(ctx context.Context, userCred mcclient.TokenCredential, localUsage IQuota, cancelUsage IQuota) error {
|
||||
func (manager *SQuotaBaseManager) _cancelPendingUsage(ctx context.Context, userCred mcclient.TokenCredential, localUsage IQuota, cancelUsage IQuota, save bool) error {
|
||||
originKeys := localUsage.GetKeys()
|
||||
// currentKeys := cancelUsage.GetKeys()
|
||||
|
||||
@@ -92,9 +92,11 @@ func (manager *SQuotaBaseManager) _cancelPendingUsage(ctx context.Context, userC
|
||||
|
||||
log.Debugf("cancelUsage: %s localUsage: %s pendingUsage: %s", jsonutils.Marshal(cancelUsage), jsonutils.Marshal(localUsage), jsonutils.Marshal(pendingUsage))
|
||||
|
||||
err = manager.changeUsage(ctx, userCred, pendingUsage, true)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "manager.changelUsage")
|
||||
if save {
|
||||
err = manager.changeUsage(ctx, userCred, pendingUsage, true)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "manager.changelUsage")
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
@@ -55,9 +55,9 @@ func getQuotaManager(quota IQuota) IQuotaManager {
|
||||
}
|
||||
}
|
||||
|
||||
func CancelPendingUsage(ctx context.Context, userCred mcclient.TokenCredential, localUsage IQuota, cancelUsage IQuota) error {
|
||||
func CancelPendingUsage(ctx context.Context, userCred mcclient.TokenCredential, localUsage IQuota, cancelUsage IQuota, save bool) error {
|
||||
manager := getQuotaManager(cancelUsage)
|
||||
return manager.cancelPendingUsage(ctx, userCred, localUsage, cancelUsage)
|
||||
return manager.cancelPendingUsage(ctx, userCred, localUsage, cancelUsage, save)
|
||||
}
|
||||
|
||||
func CheckSetPendingQuota(ctx context.Context, userCred mcclient.TokenCredential, quota IQuota) error {
|
||||
|
||||
Reference in New Issue
Block a user