X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=capifcore%2Finternal%2Fpublishservice%2Fpublishservice.go;h=3898a804535b29529e8c06eaf0ef4cf981b98910;hb=8f9fb0b58f213c930eb4bf87ca180af7b6766848;hp=3209024311baa2b8ee42138956b3a36ce72b93e9;hpb=45b9a16b4777575dccd217d0b1fa42e913072101;p=nonrtric%2Fplt%2Fsme.git diff --git a/capifcore/internal/publishservice/publishservice.go b/capifcore/internal/publishservice/publishservice.go index 3209024..3898a80 100644 --- a/capifcore/internal/publishservice/publishservice.go +++ b/capifcore/internal/publishservice/publishservice.go @@ -289,10 +289,11 @@ func (ps *PublishService) PutApfIdServiceApisServiceApiId(ctx echo.Context, apfI return sendCoreError(ctx, http.StatusBadRequest, fmt.Sprintf(errMsg, err)) } ps.updateDescription(pos, apfId, &updatedServiceDescription, &publishedService) - pos, publishedService.AefProfiles, err = ps.updateProfiles(pos, apfId, updatedServiceDescription.AefProfiles, publishedService.AefProfiles) + err = ps.checkProfilesRegistered(apfId, *updatedServiceDescription.AefProfiles) if err != nil { return sendCoreError(ctx, http.StatusBadRequest, fmt.Sprintf(errMsg, err)) } + publishedService.AefProfiles = updatedServiceDescription.AefProfiles ps.publishedServices[apfId][pos] = publishedService err = ctx.JSON(http.StatusOK, publishedService) if err != nil { @@ -342,43 +343,16 @@ func (ps *PublishService) sendEvent(service publishapi.ServiceAPIDescription, ev ps.eventChannel <- event } -func (ps *PublishService) updateProfiles(pos int, apfId string, updatedServiceDescription *[]publishapi.AefProfile, publishedService *[]publishapi.AefProfile) (int, *[]publishapi.AefProfile, error) { +func (ps *PublishService) checkProfilesRegistered(apfId string, updatedProfiles []publishapi.AefProfile) error { + registeredFuncs := ps.serviceRegister.GetAefsForPublisher(apfId) - addedProfiles := []publishapi.AefProfile{} - changedProfiles := []publishapi.AefProfile{} - for _, profile := range *updatedServiceDescription { + for _, profile := range updatedProfiles { if !slices.Contains(registeredFuncs, profile.AefId) { - return 0, nil, fmt.Errorf("function %s not registered", profile.AefId) - } - for _, publishedProfile := range *publishedService { - if publishedProfile.AefId != profile.AefId { - registeredProfiles := *publishedService - newProfiles := append(registeredProfiles, profile) - publishedService = &newProfiles - addedProfiles = append(addedProfiles, profile) - } else { - pos, registeredProfile, err := getProfile(profile.AefId, publishedService) - if err != nil { - return pos, updatedServiceDescription, fmt.Errorf("unable to update service due to: %s", err.Error()) - } - if profile.DomainName != nil { - registeredProfile.DomainName = profile.DomainName - (*publishedService)[pos] = registeredProfile - } - changedProfiles = append(changedProfiles, profile) - } - } - } - modifiedProfiles := append(changedProfiles, addedProfiles...) - return 0, &modifiedProfiles, nil -} -func getProfile(profileId string, apiProfiles *[]publishapi.AefProfile) (int, publishapi.AefProfile, error) { - for pos, profile := range *apiProfiles { - if profile.AefId == profileId { - return pos, profile, nil + return fmt.Errorf("function %s not registered", profile.AefId) } } - return 0, publishapi.AefProfile{}, fmt.Errorf("profile with ID %s is not registered for the service", profileId) + return nil + } // This function wraps sending of an error in the Error format, and