import (
"e2mgr/logger"
"e2mgr/services"
+ "time"
+
"gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
)
)
type IRanConnectStatusChangeManager interface {
- ChangeStatus(nodebInfo *entities.NodebInfo, nextStatus entities.ConnectionStatus) error
+ ChangeStatus(nodebInfo *entities.NodebInfo, nextStatus entities.ConnectionStatus) (bool, error)
}
type RanConnectStatusChangeManager struct {
}
}
-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
// only after determining event we set next status
- nodebInfo.ConnectionStatus = nextStatus;
+ nodebInfo.ConnectionStatus = nextStatus
+ // filling the timeStamp for the last Connection Status update
+ nodebInfo.StatusUpdateTimeStamp = uint64(time.Now().UnixNano())
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...
}
}
- return nil
+ return ranStatusChangePublished, nil
}
func (m *RanConnectStatusChangeManager) updateNodebInfoOnConnectionStatusInversion(nodebInfo *entities.NodebInfo, event string) error {