From: ss412g Date: Mon, 3 Aug 2020 20:57:40 +0000 (+0000) Subject: [RIC-584] - Validate setup from network and antenna type in ENB REST APIs X-Git-Tag: R5_RC~10 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=5208a1cf953edf958444d41352815073e9ebaf29;p=ric-plt%2Fe2mgr.git [RIC-584] - Validate setup from network and antenna type in ENB REST APIs Change-Id: I0292de6e31b04cf3aee741c2dd141ac1765c7f4e Signed-off-by: ss412g --- diff --git a/E2Manager/container-tag.yaml b/E2Manager/container-tag.yaml index 9c2a4cb..752d154 100644 --- a/E2Manager/container-tag.yaml +++ b/E2Manager/container-tag.yaml @@ -1,4 +1,4 @@ # The Jenkins job requires a tag to build the Docker image. # Global-JJB script assumes this file is in the repo root. --- -tag: 5.4.2 +tag: 5.4.3 diff --git a/E2Manager/handlers/httpmsghandlers/add_enb_request_handler.go b/E2Manager/handlers/httpmsghandlers/add_enb_request_handler.go index 6f7fcd6..0b86627 100644 --- a/E2Manager/handlers/httpmsghandlers/add_enb_request_handler.go +++ b/E2Manager/handlers/httpmsghandlers/add_enb_request_handler.go @@ -55,7 +55,7 @@ func (h *AddEnbRequestHandler) Handle(request models.Request) (models.IResponse, err := h.validateRequestBody(addEnbRequest) if err != nil { - h.logger.Errorf("#AddEnbRequestHandler.Handle - validation failure: %s is a mandatory field and cannot be empty", err) + h.logger.Errorf("#AddEnbRequestHandler.Handle - validation failure: %s is a mandatory field and cannot be empty or includes invalid value", err) return nil, e2managererrors.NewRequestValidationError() } @@ -99,6 +99,7 @@ func (h *AddEnbRequestHandler) createNodebInfo(addEnbRequest *models.AddEnbReque Configuration: &entities.NodebInfo_Enb{Enb: addEnbRequest.Enb}, NodeType: entities.Node_ENB, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, + SetupFromNetwork: false, } return &nodebInfo @@ -134,6 +135,10 @@ func (h *AddEnbRequestHandler) validateRequestBody(addEnbRequest *models.AddEnbR return err } + if h.nodebValidator.IsNgEnbType(addEnbRequest.Enb.GetEnbType()){ + return errors.New("enb.enbType") + } + return nil } diff --git a/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler.go b/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler.go index c346bb6..161d5c5 100644 --- a/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler.go +++ b/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler.go @@ -67,6 +67,11 @@ func (h *DeleteEnbRequestHandler) Handle(request models.Request) (models.IRespon return nil, e2managererrors.NewRequestValidationError() } + if nodebInfo.GetSetupFromNetwork() { + h.logger.Errorf("#DeleteEnbRequestHandler.Handle - RAN name: %s - can't delete RAN which was created from network.", deleteEnbRequest.RanName) + return nil, e2managererrors.NewRequestValidationError() + } + err = h.rNibDataService.RemoveEnb(nodebInfo) if err != nil { h.logger.Errorf("#DeleteEnbRequestHandler.Handle - RAN name: %s - failed to delete nodeb entity in RNIB. Error: %s", deleteEnbRequest.RanName, err) diff --git a/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler_test.go b/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler_test.go index 6734618..49d3b07 100644 --- a/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler_test.go +++ b/E2Manager/handlers/httpmsghandlers/delete_enb_request_handler_test.go @@ -113,6 +113,19 @@ func TestHandleDeleteEnbInternalRemoveEnbError(t *testing.T) { writerMock.AssertExpectations(t) } +func TestHandleDeleteEnbFromNetworkError(t *testing.T) { + handler, readerMock, _ := setupDeleteEnbRequestHandlerTest(t, false) + + ranName := "ran1" + nodebInfo := &entities.NodebInfo{RanName: ranName, NodeType: entities.Node_ENB, SetupFromNetwork: true} + readerMock.On("GetNodeb", ranName).Return(nodebInfo, nil) + //writerMock.On("RemoveEnb", nodebInfo).Return(nil) + result, err := handler.Handle(&models.DeleteEnbRequest{RanName: ranName}) + assert.NotNil(t, err) + assert.Nil(t, result) + readerMock.AssertExpectations(t) +} + func TestHandleDeleteEnbInternalRemoveNbIdentityError(t *testing.T) { handler, readerMock, writerMock := setupDeleteEnbRequestHandlerTest(t, false) diff --git a/E2Manager/managers/nodeb_validator.go b/E2Manager/managers/nodeb_validator.go index 036ede5..abbf53b 100644 --- a/E2Manager/managers/nodeb_validator.go +++ b/E2Manager/managers/nodeb_validator.go @@ -161,6 +161,12 @@ func (h *NodebValidator) IsEnbValid(enb *entities.Enb) error { return nil } +func (h *NodebValidator) IsNgEnbType(enbType entities.EnbType) bool { + return enbType == entities.EnbType_LONG_MACRO_NG_ENB || + enbType == entities.EnbType_MACRO_NG_ENB || + enbType == entities.EnbType_SHORT_MACRO_NG_ENB +} + func isServedCellValid(servedCell *entities.ServedCellInfo) error { if servedCell.CellId == "" { diff --git a/E2Manager/managers/update_enb_manager.go b/E2Manager/managers/update_enb_manager.go index 79a8f49..cb3e4bc 100755 --- a/E2Manager/managers/update_enb_manager.go +++ b/E2Manager/managers/update_enb_manager.go @@ -82,6 +82,7 @@ func (h *UpdateEnbManager) RemoveNodebCells(nodeb *entities.NodebInfo) error { func (h *UpdateEnbManager) SetNodeb(nodeb *entities.NodebInfo, request models.Request) { updateEnbRequest := request.(*models.UpdateEnbRequest) + updateEnbRequest.Enb.EnbType = nodeb.GetEnb().GetEnbType() nodeb.Configuration = &entities.NodebInfo_Enb{Enb: updateEnbRequest.Enb} } @@ -107,5 +108,9 @@ func (h *UpdateEnbManager) validateRequestBody(request *models.UpdateEnbRequest) return err } + if h.nodebValidator.IsNgEnbType(request.Enb.GetEnbType()){ + return errors.New("enb.enbType") + } + return nil }