X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=capifcore%2Finternal%2Finvokermanagement%2Finvokermanagement.go;fp=capifcore%2Finternal%2Finvokermanagement%2Finvokermanagement.go;h=5d4ba2511f124f475337b4aa1cae9a39a7aeadc9;hb=19830e74d96947d3296d0a91bf59f0af8b425404;hp=5fa5ce65cf618362e45c5c3ea136778795ac1120;hpb=c3cc44190afd4793d76f3cc5814b8b5e79267fb3;p=nonrtric%2Fplt%2Fsme.git diff --git a/capifcore/internal/invokermanagement/invokermanagement.go b/capifcore/internal/invokermanagement/invokermanagement.go index 5fa5ce6..5d4ba25 100644 --- a/capifcore/internal/invokermanagement/invokermanagement.go +++ b/capifcore/internal/invokermanagement/invokermanagement.go @@ -108,6 +108,10 @@ func (im *InvokerManager) PostOnboardedInvokers(ctx echo.Context) error { return sendCoreError(ctx, http.StatusBadRequest, fmt.Sprintf(errMsg, "invalid format for invoker")) } + if im.isInvokerOnboarded(newInvoker) { + return sendCoreError(ctx, http.StatusForbidden, fmt.Sprintf(errMsg, "invoker already onboarded")) + } + if err := im.validateInvoker(newInvoker, ctx); err != nil { return sendCoreError(ctx, http.StatusBadRequest, fmt.Sprintf(errMsg, err)) } @@ -127,6 +131,15 @@ func (im *InvokerManager) PostOnboardedInvokers(ctx echo.Context) error { return nil } +func (im *InvokerManager) isInvokerOnboarded(newInvoker invokerapi.APIInvokerEnrolmentDetails) bool { + for _, invoker := range im.onboardedInvokers { + if newInvoker.OnboardingInformation.ApiInvokerPublicKey == invoker.OnboardingInformation.ApiInvokerPublicKey { + return true + } + } + return false +} + func (im *InvokerManager) prepareNewInvoker(newInvoker *invokerapi.APIInvokerEnrolmentDetails) { var apiList invokerapi.APIList = im.publishRegister.GetAllPublishedServices() newInvoker.ApiList = &apiList