X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=E2Manager%2Fmanagers%2Fran_connect_status_change_manager.go;h=03c12a23ef3b0c8388d147a8acaca0428390c92a;hb=1dd3ab9b385a97aad0f4c48671b3091287baeef5;hp=ecb645ccc5b5d7b9bc03e14515b225a1e8c96fb3;hpb=197657e0e814c871b903ef779ad654b13347e430;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/managers/ran_connect_status_change_manager.go b/E2Manager/managers/ran_connect_status_change_manager.go index ecb645c..03c12a2 100644 --- a/E2Manager/managers/ran_connect_status_change_manager.go +++ b/E2Manager/managers/ran_connect_status_change_manager.go @@ -22,17 +22,20 @@ package managers import ( "e2mgr/logger" "e2mgr/services" + "time" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" ) const ( CONNECTED_RAW_EVENT = "CONNECTED" DISCONNECTED_RAW_EVENT = "DISCONNECTED" + UNDER_RESET_RAW_EVENT = "UNDER_RESET" NONE_RAW_EVENT = "NONE" ) type IRanConnectStatusChangeManager interface { - ChangeStatus(nodebInfo *entities.NodebInfo, nextStatus entities.ConnectionStatus) error + ChangeStatus(nodebInfo *entities.NodebInfo, nextStatus entities.ConnectionStatus) (bool, error) } type RanConnectStatusChangeManager struct { @@ -51,30 +54,36 @@ 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 // 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... @@ -89,7 +98,7 @@ func (m *RanConnectStatusChangeManager) ChangeStatus(nodebInfo *entities.NodebIn } } - return nil + return ranStatusChangePublished, nil } func (m *RanConnectStatusChangeManager) updateNodebInfoOnConnectionStatusInversion(nodebInfo *entities.NodebInfo, event string) error { @@ -126,6 +135,8 @@ func (m *RanConnectStatusChangeManager) setEvent(nodebInfo *entities.NodebInfo, event = nodebInfo.RanName + "_" + CONNECTED_RAW_EVENT } else if currentConnectionStatus == entities.ConnectionStatus_CONNECTED && nextState != entities.ConnectionStatus_CONNECTED { event = nodebInfo.RanName + "_" + DISCONNECTED_RAW_EVENT + } else if nextState == entities.ConnectionStatus_UNDER_RESET { + event = nodebInfo.RanName + "_" + UNDER_RESET_RAW_EVENT } else { event = NONE_RAW_EVENT }