Improvement of 'Get Gnb Status’ command to fetch Enb details in O1 NETCONF client 72/8172/1
authormabelgaumkar1 <mabelgaumkar@parallelwireless.com>
Fri, 6 May 2022 05:30:28 +0000 (05:30 +0000)
committermabelgaumkar1 <mabelgaumkar@parallelwireless.com>
Fri, 6 May 2022 05:34:04 +0000 (05:34 +0000)
Issue-ID: RIC-898

Signed-off-by: mabelgaumkar1 <mabelgaumkar@parallelwireless.com>
Change-Id: I08d2fe08db7ef7afb4b0a3cd25e452de7f759fe0

agent/pkg/nbi/nbi.go
agent/pkg/nbi/nbi_test.go

index b191db5..d86de57 100755 (executable)
@@ -306,35 +306,65 @@ func nbiGnbStateCB(session *C.sr_session_ctx_t, module *C.char, xpath *C.char, r
        }
 
        gnbs, err := rnib.GetListGnbIds()
-       if err != nil || len(gnbs) == 0 {
-               log.Info("Rnib.GetListGnbIds() returned elementCount=%d err:%v", len(gnbs), err)
-               return C.SR_ERR_OK
-       }
+       log.Info("Rnib.GetListGnbIds() returned elementCount=%d err:%v", len(gnbs), err)
+       if err == nil && len(gnbs) > 0 {
+               for _, gnb := range gnbs {
+                       ranName := gnb.GetInventoryName()
+                       info, err := rnib.GetNodeb(ranName)
+                       if err != nil {
+                               log.Error("GetNodeb() failed for ranName=%s: %v", ranName, err)
+                               continue
+                       }
 
-       for _, gnb := range gnbs {
-               ranName := gnb.GetInventoryName()
-               info, err := rnib.GetNodeb(ranName)
-               if err != nil {
-                       log.Error("GetNodeb() failed for ranName=%s: %v", ranName, err)
-                       continue
+                       prot := nbiClient.E2APProt2Str(int(info.E2ApplicationProtocol))
+                       connStat := nbiClient.ConnStatus2Str(int(info.ConnectionStatus))
+                       ntype := nbiClient.NodeType2Str(int(info.NodeType))
+
+                       log.Info("gNB info: %s -> %s %s %s -> %s %s", ranName, prot, connStat, ntype, gnb.GetGlobalNbId().GetPlmnId(), gnb.GetGlobalNbId().GetNbId())
+
+                       path := fmt.Sprintf("/o-ran-sc-ric-gnb-status-v1:ric/nodes/node[ran-name='%s']", ranName)
+                       nbiClient.CreateNewElement(session, parent, path, "ran-name", ranName)
+                       nbiClient.CreateNewElement(session, parent, path, "ip", info.Ip)
+                       nbiClient.CreateNewElement(session, parent, path, "port", fmt.Sprintf("%d", info.Port))
+                       nbiClient.CreateNewElement(session, parent, path, "plmn-id", gnb.GetGlobalNbId().GetPlmnId())
+                       nbiClient.CreateNewElement(session, parent, path, "nb-id", gnb.GetGlobalNbId().GetNbId())
+                       nbiClient.CreateNewElement(session, parent, path, "e2ap-protocol", prot)
+                       nbiClient.CreateNewElement(session, parent, path, "connection-status", connStat)
+                       nbiClient.CreateNewElement(session, parent, path, "node", ntype)
                }
+       }
 
-               prot := nbiClient.E2APProt2Str(int(info.E2ApplicationProtocol))
-               connStat := nbiClient.ConnStatus2Str(int(info.ConnectionStatus))
-               ntype := nbiClient.NodeType2Str(int(info.NodeType))
-
-               log.Info("gNB info: %s -> %s %s %s -> %s %s", ranName, prot, connStat, ntype, gnb.GetGlobalNbId().GetPlmnId(), gnb.GetGlobalNbId().GetNbId())
+       //Check if any Enbs are connected to RIC
+       enbs, err2 := rnib.GetListEnbIds()
+       log.Info("Rnib.GetListEnbIds() returned elementCount=%d err:%v", len(gnbs), err)
+       if err2 == nil || len(enbs) > 0 {
+               log.Info("Getting Enb details from list of Enbs")
+               for _, enb := range enbs {
+                       ranName := enb.GetInventoryName()
+                       info, err := rnib.GetNodeb(ranName)
+                       if err != nil {
+                               log.Error("GetNodeb() failed for ranName=%s: %v", ranName, err)
+                               continue
+                       }
 
-               path := fmt.Sprintf("/o-ran-sc-ric-gnb-status-v1:ric/nodes/node[ran-name='%s']", ranName)
-               nbiClient.CreateNewElement(session, parent, path, "ran-name", ranName)
-               nbiClient.CreateNewElement(session, parent, path, "ip", info.Ip)
-               nbiClient.CreateNewElement(session, parent, path, "port", fmt.Sprintf("%d", info.Port))
-               nbiClient.CreateNewElement(session, parent, path, "plmn-id", gnb.GetGlobalNbId().GetPlmnId())
-               nbiClient.CreateNewElement(session, parent, path, "nb-id", gnb.GetGlobalNbId().GetNbId())
-               nbiClient.CreateNewElement(session, parent, path, "e2ap-protocol", prot)
-               nbiClient.CreateNewElement(session, parent, path, "connection-status", connStat)
-               nbiClient.CreateNewElement(session, parent, path, "node", ntype)
+                       prot := nbiClient.E2APProt2Str(int(info.E2ApplicationProtocol))
+                       connStat := nbiClient.ConnStatus2Str(int(info.ConnectionStatus))
+                       ntype := nbiClient.NodeType2Str(int(info.NodeType))
+
+                       log.Info("eNB info: %s -> %s %s %s -> %s %s", ranName, prot, connStat, ntype, enb.GetGlobalNbId().GetPlmnId(), enb.GetGlobalNbId().GetNbId())
+
+                       path := fmt.Sprintf("/o-ran-sc-ric-gnb-status-v1:ric/nodes/node[ran-name='%s']", ranName)
+                       nbiClient.CreateNewElement(session, parent, path, "ran-name", ranName)
+                       nbiClient.CreateNewElement(session, parent, path, "ip", info.Ip)
+                       nbiClient.CreateNewElement(session, parent, path, "port", fmt.Sprintf("%d", info.Port))
+                       nbiClient.CreateNewElement(session, parent, path, "plmn-id", enb.GetGlobalNbId().GetPlmnId())
+                       nbiClient.CreateNewElement(session, parent, path, "nb-id", enb.GetGlobalNbId().GetNbId())
+                       nbiClient.CreateNewElement(session, parent, path, "e2ap-protocol", prot)
+                       nbiClient.CreateNewElement(session, parent, path, "connection-status", connStat)
+                       nbiClient.CreateNewElement(session, parent, path, "node", ntype)
+               }
        }
+
        return C.SR_ERR_OK
 }
 
@@ -432,5 +462,6 @@ func (n *Nbi) testGnbStateCB(module string) bool {
 
 type iRnib interface {
        GetListGnbIds() ([]*xapp.RNIBNbIdentity, xapp.RNIBIRNibError)
+       GetListEnbIds() ([]*xapp.RNIBNbIdentity, xapp.RNIBIRNibError)
        GetNodeb(invName string) (*xapp.RNIBNodebInfo, xapp.RNIBIRNibError)
 }
index e1795ca..7beea03 100755 (executable)
@@ -318,3 +318,7 @@ func (m *rnibMock) GetNodeb(invName string) (*xapp.RNIBNodebInfo, xapp.RNIBIRNib
        }
        return a.Get(0).(*xapp.RNIBNodebInfo), a.Error(1)
 }
+
+func (m *rnibMock) GetListEnbIds() ([]*xapp.RNIBNbIdentity, xapp.RNIBIRNibError) {
+       return nil, nil
+}
\ No newline at end of file