X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fcontrol%2Fe2if_state.go;h=b86ef81fc90594c9d41f7e7ce7808ef0326048b8;hb=4378baf6754d656738f9f55233e7598ae05df2d6;hp=0f4305656e1ae8088a6b6a2559ef877fbe2f367a;hpb=c7da4ee19c2b2a96c1eeccd8da944902fcd9323f;p=ric-plt%2Fsubmgr.git diff --git a/pkg/control/e2if_state.go b/pkg/control/e2if_state.go index 0f43056..b86ef81 100644 --- a/pkg/control/e2if_state.go +++ b/pkg/control/e2if_state.go @@ -20,6 +20,7 @@ package control import ( + "encoding/json" "fmt" "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" "strings" @@ -56,7 +57,35 @@ func (e *E2IfState) Init(c *Control) { e.control = c e.NbIdMap = make(map[string]string, 0) e.ReadE2ConfigurationFromRnib() - e.SubscribeChannels() + err := e.SubscribeChannels() + if err != nil { + xapp.Logger.Error("Init(): SubscribeChannels() failed: %v", err) + } +} + +func (e *E2IfState) GetE2NodesJson() []byte { + + e.mutex.Lock() + defer e.mutex.Unlock() + + // Map contains something like this{"RAN_NAME_1":"RAN_NAME_1","RAN_NAME_11":"RAN_NAME_11","RAN_NAME_2":"RAN_NAME_2"} + var ranNameList []string + for _, ranName := range e.NbIdMap { + ranNameList = append(ranNameList, ranName) + } + + e2NodesJson, err := json.Marshal(ranNameList) + if err != nil { + xapp.Logger.Error("GetE2Node() json.Marshal error: %v", err) + } + return e2NodesJson +} + +func (e *E2IfState) GetAllE2Nodes() map[string]string { + + e.mutex.Lock() + defer e.mutex.Unlock() + return e.NbIdMap } func (e *E2IfState) NotificationCb(ch string, events ...string) { @@ -67,7 +96,8 @@ func (e *E2IfState) NotificationCb(ch string, events ...string) { return } - if strings.Contains(events[0], "_CONNECTED") { + if strings.Contains(events[0], "_CONNECTED") && !strings.Contains(events[0], "_CONNECTED_SETUP_FAILED") { + e.control.UpdateCounter(cE2StateChangedToUp) nbId, err := ExtractNbiIdFromString(events[0]) if err != nil { xapp.Logger.Error("NotificationCb CONNECTED len(nbId) == 0 ") @@ -76,6 +106,7 @@ func (e *E2IfState) NotificationCb(ch string, events ...string) { xapp.Logger.Debug("E2 CONNECTED. NbId=%s", nbId) e.NbIdMap[nbId] = nbId } else if strings.Contains(events[0], "_DISCONNECTED") { + e.control.UpdateCounter(cE2StateChangedToDown) nbId, err := ExtractNbiIdFromString(events[0]) if err != nil { xapp.Logger.Error("NotificationCb DISCONNECTED len(nbId) == 0 ") @@ -113,7 +144,6 @@ func (e *E2IfState) ReadE2ConfigurationFromRnib() { if e.isNodeBActive(nbIdentity.InventoryName) == false { if _, ok := e.NbIdMap[nbIdentity.InventoryName]; ok { delete(e.NbIdMap, nbIdentity.InventoryName) - e.control.UpdateCounter(cE2StateChangedToDown) xapp.Logger.Debug("E2 connection DISCONNETED: %v", nbIdentity.InventoryName) // Delete all subscriptions related to InventoryName/nbId @@ -124,7 +154,6 @@ func (e *E2IfState) ReadE2ConfigurationFromRnib() { if _, ok := e.NbIdMap[nbIdentity.InventoryName]; !ok { e.NbIdMap[nbIdentity.InventoryName] = nbIdentity.InventoryName - e.control.UpdateCounter(cE2StateChangedToDown) xapp.Logger.Debug("E2 connection CONNECTED: %v", nbIdentity.InventoryName) } }