package control
import (
+ "encoding/json"
"fmt"
- "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
"strings"
"sync"
+
+ "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
)
type XappRnibIf struct {
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) {
delete(e.NbIdMap, nbId)
e.control.registry.DeleteAllE2Subscriptions(nbId, e.control)
}
+ } else if strings.Contains(events[0], "_UNDER_RESET") {
+ xapp.Logger.Debug("NotificationCb UNDER_RESET len(nbId) == 0 ")
+ e.control.UpdateCounter(cE2StateUnderReset)
+ nbId, err := ExtractNbiIdFromString(events[0])
+ if err != nil {
+ xapp.Logger.Error("NotificationCb _UNDER_RESET %v ", err)
+ return
+ }
+ xapp.Logger.Debug("E2 Under Reset. NbId=%s", nbId)
+ if _, ok := e.NbIdMap[nbId]; ok {
+ e.control.registry.DeleteAllE2Subscriptions(nbId, e.control)
+ }
}
}
} else if strings.Contains(s, "_DISCONNECTED") {
splitStringTbl := strings.Split(s, "_DISCONNECTED")
nbId = splitStringTbl[0]
+ } else if strings.Contains(s, "_UNDER_RESET") {
+ splitStringTbl := strings.Split(s, "_UNDER_RESET")
+ nbId = splitStringTbl[0]
}
if len(nbId) == 0 {
return "", fmt.Errorf("ExtractNbiIdFromString(): len(nbId) == 0 ")