Merge "Changing E2 node connection status to reset."
[ric-plt/e2mgr.git] / E2Manager / handlers / httpmsghandlers / add_enb_request_handler.go
index 92afb33..bfcced5 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,
        }
 }
 
@@ -57,6 +59,12 @@ func (h *AddEnbRequestHandler) Handle(request models.Request) (models.IResponse,
                return nil, e2managererrors.NewRequestValidationError()
        }
 
+       enbType := addEnbRequest.Enb.GetEnbType()
+       if h.nodebValidator.IsNgEnbType(enbType){
+               h.logger.Errorf("#AddEnbRequestHandler.Handle - validation failure: enb type is not supported. enb type: %s", enbType)
+               return nil, e2managererrors.NewRequestValidationError()
+       }
+
        _, err = h.rNibDataService.GetNodeb(addEnbRequest.RanName)
 
        if err == nil {
@@ -71,16 +79,21 @@ func (h *AddEnbRequestHandler) Handle(request models.Request) (models.IResponse,
        }
 
        nodebInfo := h.createNodebInfo(addEnbRequest)
-       err = h.rNibDataService.SaveNodeb(nodebInfo)
+       err = h.rNibDataService.AddEnb(nodebInfo)
 
        if err != nil {
-               h.logger.Errorf("#AddEnbRequestHandler.Handle - RAN name: %s - failed to save nodeb entity in RNIB. Error: %s", addEnbRequest.RanName, err)
+               h.logger.Errorf("#AddEnbRequestHandler.Handle - RAN name: %s - failed to add eNB entity in RNIB. Error: %s", addEnbRequest.RanName, err)
                return nil, e2managererrors.NewRnibDbError()
        }
 
-       _ = h.createNbIdentity(addEnbRequest) // TODO: add call to ranListManager
+       nbIdentity := h.createNbIdentity(addEnbRequest)
+       err = h.ranListManager.AddNbIdentity(entities.Node_ENB, nbIdentity)
+
+       if err != nil {
+               return nil, e2managererrors.NewRnibDbError()
+       }
 
-       return models.NewAddEnbResponse(nodebInfo), nil
+       return models.NewNodebResponse(nodebInfo), nil
 }
 
 func (h *AddEnbRequestHandler) createNodebInfo(addEnbRequest *models.AddEnbRequest) *entities.NodebInfo {
@@ -92,6 +105,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