[RIC-430] - Update Connection Status on RAN List
[ric-plt/e2mgr.git] / E2Manager / handlers / httpmsghandlers / add_enb_request_handler.go
index 8710396..0b86627 100644 (file)
@@ -34,13 +34,15 @@ type AddEnbRequestHandler struct {
        logger          *logger.Logger
        nodebValidator  *managers.NodebValidator
        rNibDataService services.RNibDataService
+       ranListManager  managers.RanListManager
 }
 
-func NewAddEnbRequestHandler(logger *logger.Logger, rNibDataService services.RNibDataService, nodebValidator *managers.NodebValidator) *AddEnbRequestHandler {
+func NewAddEnbRequestHandler(logger *logger.Logger, rNibDataService services.RNibDataService, nodebValidator *managers.NodebValidator, ranListManager managers.RanListManager) *AddEnbRequestHandler {
        return &AddEnbRequestHandler{
                logger:          logger,
                nodebValidator:  nodebValidator,
                rNibDataService: rNibDataService,
+               ranListManager:  ranListManager,
        }
 }
 
@@ -53,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()
        }
 
@@ -70,17 +72,22 @@ func (h *AddEnbRequestHandler) Handle(request models.Request) (models.IResponse,
                return nil, e2managererrors.NewRnibDbError()
        }
 
-       nbIdentity := h.createNbIdentity(addEnbRequest)
        nodebInfo := h.createNodebInfo(addEnbRequest)
+       err = h.rNibDataService.AddEnb(nodebInfo)
+
+       if err != nil {
+               h.logger.Errorf("#AddEnbRequestHandler.Handle - RAN name: %s - failed to add eNB entity in RNIB. Error: %s", addEnbRequest.RanName, err)
+               return nil, e2managererrors.NewRnibDbError()
+       }
 
-       err = h.rNibDataService.SaveNodeb(nbIdentity, nodebInfo)
+       nbIdentity := h.createNbIdentity(addEnbRequest)
+       err = h.ranListManager.AddNbIdentity(entities.Node_ENB, nbIdentity)
 
        if err != nil {
-               h.logger.Errorf("#AddEnbRequestHandler.Handle - RAN name: %s - failed to save nodeb entity in RNIB. Error: %s", addEnbRequest.RanName, err)
                return nil, e2managererrors.NewRnibDbError()
        }
 
-       return models.NewAddEnbResponse(nodebInfo), nil
+       return models.NewNodebResponse(nodebInfo), nil
 }
 
 func (h *AddEnbRequestHandler) createNodebInfo(addEnbRequest *models.AddEnbRequest) *entities.NodebInfo {
@@ -90,19 +97,20 @@ func (h *AddEnbRequestHandler) createNodebInfo(addEnbRequest *models.AddEnbReque
                Port:             addEnbRequest.Port,
                GlobalNbId:       addEnbRequest.GlobalNbId,
                Configuration:    &entities.NodebInfo_Enb{Enb: addEnbRequest.Enb},
+               NodeType:         entities.Node_ENB,
                ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,
+               SetupFromNetwork: false,
        }
 
        return &nodebInfo
 }
 
 func (h *AddEnbRequestHandler) createNbIdentity(addEnbRequest *models.AddEnbRequest) *entities.NbIdentity {
-       nbIdentity := entities.NbIdentity{
-               GlobalNbId:    addEnbRequest.GlobalNbId,
-               InventoryName: addEnbRequest.RanName,
+       return &entities.NbIdentity{
+               GlobalNbId:       addEnbRequest.GlobalNbId,
+               InventoryName:    addEnbRequest.RanName,
+               ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,
        }
-
-       return &nbIdentity
 }
 
 func (h *AddEnbRequestHandler) validateRequestBody(addEnbRequest *models.AddEnbRequest) error {
@@ -127,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
 }