From a87a8f2f41e4f0df686e87bce1e26ed4be09adde Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Fri, 25 Jun 2021 15:49:02 +0800 Subject: [PATCH] fix(common): batch validate create --- pkg/cloudcommon/db/caller.go | 6 +++--- pkg/cloudcommon/db/db_dispatcher.go | 9 +++++---- pkg/cloudcommon/db/interface.go | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/pkg/cloudcommon/db/caller.go b/pkg/cloudcommon/db/caller.go index b83b8194b4..503775f367 100644 --- a/pkg/cloudcommon/db/caller.go +++ b/pkg/cloudcommon/db/caller.go @@ -210,13 +210,13 @@ func mergeInputOutputData(data *jsonutils.JSONDict, resVal reflect.Value) *jsonu return data } -func ValidateCreateData(manager IModelManager, ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) { - ret, err := call(manager, "ValidateCreateData", ctx, userCred, ownerId, query, data) +func ValidateCreateData(funcName string, manager IModelManager, ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) { + ret, err := call(manager, funcName, ctx, userCred, ownerId, query, data) if err != nil { return nil, httperrors.NewGeneralError(err) } if len(ret) != 2 { - return nil, httperrors.NewInternalServerError("Invald ValidateCreateData return value") + return nil, httperrors.NewInternalServerError("Invald %s return value", funcName) } resVal := ret[0] if err := ValueToError(ret[1]); err != nil { diff --git a/pkg/cloudcommon/db/db_dispatcher.go b/pkg/cloudcommon/db/db_dispatcher.go index 00efae442a..11411b164e 100644 --- a/pkg/cloudcommon/db/db_dispatcher.go +++ b/pkg/cloudcommon/db/db_dispatcher.go @@ -1233,11 +1233,11 @@ func _doCreateItem( } } + funcName := "ValidateCreateData" if batchCreate { - dataDict, err = manager.BatchCreateValidateCreateData(ctx, userCred, ownerId, query, dataDict) - } else { - dataDict, err = ValidateCreateData(manager, ctx, userCred, ownerId, query, dataDict) + funcName = "BatchCreateValidateCreateData" } + dataDict, err = ValidateCreateData(funcName, manager, ctx, userCred, ownerId, query, dataDict) if err != nil { return nil, httperrors.NewGeneralError(err) @@ -1545,7 +1545,8 @@ func managerPerformCheckCreateData( }() } - return ValidateCreateData(manager, ctx, userCred, ownerId, query, bodyDict) + funcName := "ValidateCreateData" + return ValidateCreateData(funcName, manager, ctx, userCred, ownerId, query, bodyDict) } func (dispatcher *DBModelDispatcher) PerformClassAction(ctx context.Context, action string, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { diff --git a/pkg/cloudcommon/db/interface.go b/pkg/cloudcommon/db/interface.go index b959b5bbd9..5ec78ab8f1 100644 --- a/pkg/cloudcommon/db/interface.go +++ b/pkg/cloudcommon/db/interface.go @@ -86,7 +86,7 @@ type IModelManager interface { // create hooks AllowCreateItem(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) bool - BatchCreateValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) + // BatchCreateValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) // ValidateCreateData dynamic called by dispatcher // ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) OnCreateComplete(ctx context.Context, items []IModel, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject)