Automation of nodeb state API
[ric-plt/e2mgr.git] / E2Manager / managers / ran_connect_status_change_manager.go
index 26d12b2..1e3b3aa 100644 (file)
@@ -31,6 +31,10 @@ const (
        NONE_RAW_EVENT         = "NONE"
 )
 
+type IRanConnectStatusChangeManager interface {
+       ChangeStatus(nodebInfo *entities.NodebInfo, nextStatus entities.ConnectionStatus) (bool, error)
+}
+
 type RanConnectStatusChangeManager struct {
        logger          *logger.Logger
        rnibDataService services.RNibDataService
@@ -47,9 +51,11 @@ func NewRanConnectStatusChangeManager(logger *logger.Logger, rnibDataService ser
        }
 }
 
-func (m *RanConnectStatusChangeManager) ChangeStatus(nodebInfo *entities.NodebInfo, nextStatus entities.ConnectionStatus) error {
+func (m *RanConnectStatusChangeManager) ChangeStatus(nodebInfo *entities.NodebInfo, nextStatus entities.ConnectionStatus) (bool, error) {
        m.logger.Infof("#RanConnectStatusChangeManager.ChangeStatus - RAN name: %s, currentStatus: %s, nextStatus: %s", nodebInfo.RanName, nodebInfo.GetConnectionStatus(), nextStatus)
 
+       var ranStatusChangePublished bool
+
        // set the proper event
        event := m.setEvent(nodebInfo, nextStatus)
        isConnectivityEvent := event != NONE_RAW_EVENT
@@ -59,18 +65,20 @@ func (m *RanConnectStatusChangeManager) ChangeStatus(nodebInfo *entities.NodebIn
        if !isConnectivityEvent {
                err := m.updateNodebInfo(nodebInfo)
                if err != nil {
-                       return err
+                       return ranStatusChangePublished, err
                }
        } else {
                err := m.updateNodebInfoOnConnectionStatusInversion(nodebInfo, event)
                if err != nil {
-                       return err
+                       return ranStatusChangePublished, err
                }
+               ranStatusChangePublished = true
        }
 
        // in any case, update RanListManager
-       m.logger.Infof("#RanConnectStatusChangeManager.ChangeStatus - RAN name: %s, updating RanListManager... status: %s", nodebInfo.RanName, nodebInfo.GetConnectionStatus())
-       err := m.ranListManager.UpdateRanState(nodebInfo)
+       connectionStatus := nodebInfo.GetConnectionStatus()
+       m.logger.Infof("#RanConnectStatusChangeManager.ChangeStatus - RAN name: %s, updating RanListManager... status: %s", nodebInfo.RanName, connectionStatus)
+       err := m.ranListManager.UpdateNbIdentityConnectionStatus(nodebInfo.GetNodeType(), nodebInfo.RanName, connectionStatus)
        if err != nil {
                m.logger.Errorf("#RanConnectStatusChangeManager.ChangeStatus - RAN name: %s - Failed updating RAN's connection status by RanListManager. Error: %v", nodebInfo.RanName, err)
                // log and proceed...
@@ -85,7 +93,7 @@ func (m *RanConnectStatusChangeManager) ChangeStatus(nodebInfo *entities.NodebIn
                }
        }
 
-       return nil
+       return ranStatusChangePublished, nil
 }
 
 func (m *RanConnectStatusChangeManager) updateNodebInfoOnConnectionStatusInversion(nodebInfo *entities.NodebInfo, event string) error {