Merge pull request #5963 from swordqiu/automated-cherry-pick-of-#5961-upstream-release-3.1

Automated cherry pick of #5961: fix: clean pending usage caused by pre-validate-create-data
This commit is contained in:
Zexi Li
2020-04-23 00:03:15 +08:00
committed by GitHub
2 changed files with 19 additions and 6 deletions
+19
View File
@@ -1155,6 +1155,12 @@ func (dispatcher *DBModelDispatcher) Create(ctx context.Context, query jsonutils
model, err := DoCreate(dispatcher.modelManager, ctx, userCred, query, data, ownerId)
if err != nil {
// log.Errorf("fail to doCreateItem %s", err)
if CancelPendingUsagesInContext != nil {
err := CancelPendingUsagesInContext(ctx, userCred)
if err != nil {
log.Errorf("CancelPendingUsagesInContext fail %s", err)
}
}
failErr := manager.OnCreateFailed(ctx, userCred, ownerId, query, data)
if failErr != nil {
log.Errorf("manager.OnCreateFailed %s", failErr)
@@ -1347,6 +1353,19 @@ func managerPerformCheckCreateData(
return nil, httperrors.NewForbiddenError("not allow to perform %s", action)
}
if InitPendingUsagesInContext != nil {
ctx = InitPendingUsagesInContext(ctx)
defer func() {
if CancelPendingUsagesInContext != nil {
err := CancelPendingUsagesInContext(ctx, userCred)
if err != nil {
log.Errorf("CancelPendingUsagesInContext fail %s", err)
}
}
}()
}
return ValidateCreateData(manager, ctx, userCred, ownerId, query, bodyDict)
}
-6
View File
@@ -391,12 +391,6 @@ func (manager *SModelBaseManager) BatchCreateValidateCreateData(ctx context.Cont
}
func (manager *SModelBaseManager) OnCreateFailed(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) error {
if CancelPendingUsagesInContext != nil {
err := CancelPendingUsagesInContext(ctx, userCred)
if err != nil {
return errors.Wrap(err, "CancelPendingUsagesInContext")
}
}
return nil
}