Add R5 content to master
[ric-plt/e2mgr.git] / E2Manager / handlers / httpmsghandlers / setup_request_handler.go
index 92ec944..dae75a9 100644 (file)
@@ -37,21 +37,23 @@ const (
 )
 
 type SetupRequestHandler struct {
-       rNibDataService     services.RNibDataService
-       logger              *logger.Logger
-       ranSetupManager     managers.IRanSetupManager
-       protocol            entities.E2ApplicationProtocol
-       e2tInstancesManager managers.IE2TInstancesManager
+       rNibDataService       services.RNibDataService
+       logger                *logger.Logger
+       ranSetupManager       managers.IRanSetupManager
+       protocol              entities.E2ApplicationProtocol
+       e2tAssociationManager *managers.E2TAssociationManager
+       e2tInstancesManager   managers.IE2TInstancesManager
 }
 
 func NewSetupRequestHandler(logger *logger.Logger, rNibDataService services.RNibDataService,
-       ranSetupManager managers.IRanSetupManager, protocol entities.E2ApplicationProtocol, e2tInstancesManager managers.IE2TInstancesManager) *SetupRequestHandler {
+       ranSetupManager managers.IRanSetupManager, protocol entities.E2ApplicationProtocol, e2tInstancesManager managers.IE2TInstancesManager, e2tAssociationManager *managers.E2TAssociationManager) *SetupRequestHandler {
        return &SetupRequestHandler{
-               logger:              logger,
-               rNibDataService:     rNibDataService,
-               ranSetupManager:     ranSetupManager,
-               protocol:            protocol,
-               e2tInstancesManager: e2tInstancesManager,
+               logger:                logger,
+               rNibDataService:       rNibDataService,
+               ranSetupManager:       ranSetupManager,
+               protocol:              protocol,
+               e2tAssociationManager: e2tAssociationManager,
+               e2tInstancesManager:   e2tInstancesManager,
        }
 }
 
@@ -92,16 +94,14 @@ func (h *SetupRequestHandler) Handle(request models.Request) (models.IResponse,
        return nil, result
 }
 
-func createInitialNodeInfo(requestDetails *models.SetupRequest, protocol entities.E2ApplicationProtocol, e2tAddress string) (*entities.NodebInfo, *entities.NbIdentity) {
+func createInitialNodeInfo(requestDetails *models.SetupRequest, protocol entities.E2ApplicationProtocol) (*entities.NodebInfo, *entities.NbIdentity) {
 
        nodebInfo := &entities.NodebInfo{
-               Ip:                           requestDetails.RanIp,
-               Port:                         uint32(requestDetails.RanPort),
-               ConnectionStatus:             entities.ConnectionStatus_CONNECTING,
-               E2ApplicationProtocol:        protocol,
-               RanName:                      requestDetails.RanName,
-               ConnectionAttempts:           0,
-               AssociatedE2TInstanceAddress: e2tAddress,
+               Ip:                    requestDetails.RanIp,
+               Port:                  uint32(requestDetails.RanPort),
+               ConnectionStatus:      entities.ConnectionStatus_CONNECTING,
+               E2ApplicationProtocol: protocol,
+               RanName:               requestDetails.RanName,
        }
 
        nbIdentity := &entities.NbIdentity{
@@ -117,12 +117,11 @@ func (h *SetupRequestHandler) connectExistingRanWithoutAssociatedE2TAddress(node
        if err != nil {
                h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed selecting E2T instance", nodebInfo.RanName)
 
-               if nodebInfo.ConnectionStatus == entities.ConnectionStatus_DISCONNECTED && nodebInfo.ConnectionAttempts == 0 {
+               if nodebInfo.ConnectionStatus == entities.ConnectionStatus_DISCONNECTED{
                        return err
                }
 
                nodebInfo.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED
-               nodebInfo.ConnectionAttempts = 0
                updateError := h.rNibDataService.UpdateNodebInfo(nodebInfo)
 
                if updateError != nil {
@@ -132,23 +131,13 @@ func (h *SetupRequestHandler) connectExistingRanWithoutAssociatedE2TAddress(node
                return err
        }
 
-       err = h.e2tInstancesManager.AssociateRan(nodebInfo.RanName, e2tAddress)
+       err = h.e2tAssociationManager.AssociateRan(e2tAddress, nodebInfo)
 
        if err != nil {
                h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed associating ran to e2t address %s. error: %s", nodebInfo.RanName, e2tAddress, err)
                return err
        }
 
-       nodebInfo.AssociatedE2TInstanceAddress = e2tAddress
-       nodebInfo.ConnectionAttempts = 0
-
-       err = h.rNibDataService.UpdateNodebInfo(nodebInfo)
-
-       if err != nil {
-               h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed updating nodeb in rNib. error: %s", nodebInfo.RanName, err)
-               return e2managererrors.NewRnibDbError()
-       }
-
        h.logger.Infof("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - successfully updated nodeb in rNib", nodebInfo.RanName)
 
        result := h.ranSetupManager.ExecuteSetup(nodebInfo, entities.ConnectionStatus_CONNECTING)
@@ -160,7 +149,6 @@ func (h *SetupRequestHandler) connectExistingRanWithAssociatedE2TAddress(nodebIn
        if nodebInfo.ConnectionStatus == entities.ConnectionStatus_CONNECTED {
                status = nodebInfo.ConnectionStatus
        }
-       nodebInfo.ConnectionAttempts = 0
        err := h.rNibDataService.UpdateNodebInfo(nodebInfo)
 
        if err != nil {
@@ -170,7 +158,6 @@ func (h *SetupRequestHandler) connectExistingRanWithAssociatedE2TAddress(nodebIn
 
        h.logger.Infof("#SetupRequestHandler.connectExistingRanWithAssociatedE2TAddress - RAN name: %s - successfully reset connection attempts of RAN", nodebInfo.RanName)
 
-
        result := h.ranSetupManager.ExecuteSetup(nodebInfo, status)
        return result
 }
@@ -184,14 +171,7 @@ func (h *SetupRequestHandler) connectNewRan(request *models.SetupRequest, protoc
                return err
        }
 
-       err = h.e2tInstancesManager.AssociateRan(request.RanName, e2tAddress)
-
-       if err != nil {
-               h.logger.Errorf("#SetupRequestHandler.connectNewRan - RAN name: %s - failed associating ran to e2t address %s. error: %s", request.RanName, e2tAddress, err)
-               return err
-       }
-
-       nodebInfo, nodebIdentity := createInitialNodeInfo(request, protocol, e2tAddress)
+       nodebInfo, nodebIdentity := createInitialNodeInfo(request, protocol)
 
        err = h.rNibDataService.SaveNodeb(nodebIdentity, nodebInfo)
 
@@ -202,6 +182,13 @@ func (h *SetupRequestHandler) connectNewRan(request *models.SetupRequest, protoc
 
        h.logger.Infof("#SetupRequestHandler.connectNewRan - RAN name: %s - initial nodeb entity was saved to rNib", request.RanName)
 
+       err = h.e2tAssociationManager.AssociateRan(e2tAddress, nodebInfo)
+
+       if err != nil {
+               h.logger.Errorf("#SetupRequestHandler.connectNewRan - RAN name: %s - failed associating ran to e2t address %s. error: %s", request.RanName, e2tAddress, err)
+               return err
+       }
+
        result := h.ranSetupManager.ExecuteSetup(nodebInfo, entities.ConnectionStatus_CONNECTING)
 
        return result