[RIC-584] - Validate setup from network and antenna type in ENB REST APIs 05/4505/1
authorss412g <shuky.har-noy@intl.att.com>
Mon, 3 Aug 2020 20:57:40 +0000 (20:57 +0000)
committerss412g <shuky.har-noy@intl.att.com>
Mon, 3 Aug 2020 20:57:52 +0000 (20:57 +0000)
Change-Id: I0292de6e31b04cf3aee741c2dd141ac1765c7f4e
Signed-off-by: ss412g <shuky.har-noy@intl.att.com>
E2Manager/container-tag.yaml
E2Manager/handlers/httpmsghandlers/add_enb_request_handler.go
E2Manager/handlers/httpmsghandlers/delete_enb_request_handler.go
E2Manager/handlers/httpmsghandlers/delete_enb_request_handler_test.go
E2Manager/managers/nodeb_validator.go
E2Manager/managers/update_enb_manager.go

index 9c2a4cb..752d154 100644 (file)
@@ -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
index 6f7fcd6..0b86627 100644 (file)
@@ -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
 }
 
index c346bb6..161d5c5 100644 (file)
@@ -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)
index 6734618..49d3b07 100644 (file)
@@ -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)
 
index 036ede5..abbf53b 100644 (file)
@@ -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 == "" {
index 79a8f49..cb3e4bc 100755 (executable)
@@ -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
 }