fix: clean pending usage caused by pre-validate-create-data

This commit is contained in:
Qiu Jian
2020-04-22 23:40:28 +08:00
parent ca7be6fa79
commit f145b360d6
2 changed files with 19 additions and 6 deletions
+19
View File
@@ -1220,6 +1220,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)
@@ -1412,6 +1418,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
@@ -417,12 +417,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
}