X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=capifcore%2Finternal%2Fprovidermanagement%2Fprovidermanagement.go;h=63ed4d8c35f24b661ae32b5be4f9ee3ff28ba590;hb=cf1b587eba848c3500c4ffa020d1665f3fc7021f;hp=82d833ff57e7e89106412212ea2e25c69586d9fc;hpb=c9e08b2a2f647f9f870040570c5e71305f0fb5d2;p=nonrtric%2Fplt%2Fsme.git diff --git a/capifcore/internal/providermanagement/providermanagement.go b/capifcore/internal/providermanagement/providermanagement.go index 82d833f..63ed4d8 100644 --- a/capifcore/internal/providermanagement/providermanagement.go +++ b/capifcore/internal/providermanagement/providermanagement.go @@ -36,7 +36,8 @@ import ( //go:generate mockery --name ServiceRegister type ServiceRegister interface { - IsFunctionRegistered(aefId string) bool + IsFunctionRegistered(functionId string) bool + GetAefsForPublisher(apfId string) []string } type ProviderManager struct { @@ -50,12 +51,12 @@ func NewProviderManager() *ProviderManager { } } -func (pm *ProviderManager) IsFunctionRegistered(aefId string) bool { +func (pm *ProviderManager) IsFunctionRegistered(functionId string) bool { registered := false out: for _, provider := range pm.onboardedProviders { for _, registeredFunc := range *provider.ApiProvFuncs { - if *registeredFunc.ApiProvFuncId == aefId { + if *registeredFunc.ApiProvFuncId == functionId { registered = true break out } @@ -65,6 +66,27 @@ out: return registered } +func (pm *ProviderManager) GetAefsForPublisher(apfId string) []string { + for _, provider := range pm.onboardedProviders { + for _, registeredFunc := range *provider.ApiProvFuncs { + if *registeredFunc.ApiProvFuncId == apfId && registeredFunc.ApiProvFuncRole == provapi.ApiProviderFuncRoleAPF { + return getExposedFuncs(provider.ApiProvFuncs) + } + } + } + return nil +} + +func getExposedFuncs(providerFuncs *[]provapi.APIProviderFunctionDetails) []string { + exposedFuncs := []string{} + for _, registeredFunc := range *providerFuncs { + if registeredFunc.ApiProvFuncRole == provapi.ApiProviderFuncRoleAEF { + exposedFuncs = append(exposedFuncs, *registeredFunc.ApiProvFuncId) + } + } + return exposedFuncs +} + func (pm *ProviderManager) PostRegistrations(ctx echo.Context) error { var newProvider provapi.APIProviderEnrolmentDetails err := ctx.Bind(&newProvider) @@ -121,6 +143,9 @@ func (pm *ProviderManager) PutRegistrationsRegistrationId(ctx echo.Context, regi return sendCoreError(ctx, http.StatusBadRequest, "Invalid format for provider") } + pm.lock.Lock() + defer pm.lock.Unlock() + for _, function := range *updatedProvider.ApiProvFuncs { if function.ApiProvFuncId == nil { function.ApiProvFuncId = pm.getFuncId(function.ApiProvFuncRole, function.ApiProvFuncInfo)