X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fhandlers%2Fhttpmsghandlers%2Fupdate_gnb_request_handler.go;h=5d9d2b27c65bbc41fc9e03b42e2a32bdc9bc0087;hb=a07b8597afc9d063a7f37a376a5bcf29ba29b557;hp=1d12a5363e00ab058a89b8722d88c27406493d78;hpb=514e6041ca6b9b92cb887c941767f298a746e315;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/handlers/httpmsghandlers/update_gnb_request_handler.go b/E2Manager/handlers/httpmsghandlers/update_gnb_request_handler.go index 1d12a53..5d9d2b2 100644 --- a/E2Manager/handlers/httpmsghandlers/update_gnb_request_handler.go +++ b/E2Manager/handlers/httpmsghandlers/update_gnb_request_handler.go @@ -68,26 +68,48 @@ func (h *UpdateGnbRequestHandler) Handle(request models.Request) (models.IRespon return nil, e2managererrors.NewResourceNotFoundError() } - //gnb := nodebInfo.GetGnb() - // - //if gnb == nil { - // // TODO: log and return appropriate error - // return nil, e2managererrors.NewRnibDbError() - //} - // - //gnb.ServedNrCells = updateGnbRequest.ServedNrCells - // - //err = h.rNibDataService.UpdateGnbCells(nodebInfo, updateGnbRequest.ServedNrCells) - // - //if err != nil { - // // TODO: handle error - // return nil, err - //} + err = h.updateGnbCells(nodebInfo, updateGnbRequest) + + if err != nil { + return nil, err + } return models.NewUpdateGnbResponse(nodebInfo), nil } -func (h *UpdateGnbRequestHandler) validateRequestBody(updateGnbRequest models.UpdateGnbRequest) (error) { +func (h *UpdateGnbRequestHandler) updateGnbCells(nodebInfo *entities.NodebInfo, updateGnbRequest models.UpdateGnbRequest) error { + + ranName := nodebInfo.RanName + gnb := nodebInfo.GetGnb() + + if gnb == nil { + h.logger.Errorf("#UpdateGnbRequestHandler.updateGnbCells - RAN name: %s - nodeb missing gnb configuration", ranName) + return e2managererrors.NewInternalError() + } + + if len(gnb.ServedNrCells) != 0 { + err := h.rNibDataService.RemoveServedNrCells(ranName, gnb.ServedNrCells) + + if err != nil { + h.logger.Errorf("#UpdateGnbRequestHandler.updateGnbCells - RAN name: %s - Failed removing served nr cells", ranName) + return e2managererrors.NewRnibDbError() + } + } + + gnb.ServedNrCells = updateGnbRequest.ServedNrCells + + err := h.rNibDataService.UpdateGnbCells(nodebInfo, updateGnbRequest.ServedNrCells) + + if err != nil { + h.logger.Errorf("#UpdateGnbRequestHandler.updateGnbCells - RAN name: %s - Failed updating GNB cells. Error: %s", ranName, err) + return e2managererrors.NewRnibDbError() + } + + h.logger.Infof("#UpdateGnbRequestHandler.updateGnbCells - RAN name: %s - Successfully updated GNB cells", ranName) + return nil +} + +func (h *UpdateGnbRequestHandler) validateRequestBody(updateGnbRequest models.UpdateGnbRequest) error { if len(updateGnbRequest.ServedNrCells) == 0 { h.logger.Errorf(VALIDATION_FAILURE_MESSAGE+" and cannot be empty", "servedCells") @@ -128,23 +150,23 @@ func (h *UpdateGnbRequestHandler) validateRequestBody(updateGnbRequest models.Up func isServedNrCellInformationValid(servedNrCellInformation *entities.ServedNRCellInformation) error { if servedNrCellInformation.CellId == "" { - return errors.New("cellId"); + return errors.New("cellId") } if servedNrCellInformation.ChoiceNrMode == nil { - return errors.New("choiceNrMode"); + return errors.New("choiceNrMode") } if servedNrCellInformation.NrMode == entities.Nr_UNKNOWN { - return errors.New("nrMode"); + return errors.New("nrMode") } if servedNrCellInformation.NrPci == 0 { - return errors.New("nrPci"); + return errors.New("nrPci") } if len(servedNrCellInformation.ServedPlmns) == 0 { - return errors.New("servedPlmns"); + return errors.New("servedPlmns") } return isServedNrCellInfoChoiceNrModeValid(servedNrCellInformation.ChoiceNrMode)