From: mabelgaumkar1 Date: Fri, 6 May 2022 05:30:28 +0000 (+0000) Subject: Improvement of 'Get Gnb Status’ command to fetch Enb details in O1 NETCONF client X-Git-Tag: 0.6.0~2 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=ric-plt%2Fo1.git;a=commitdiff_plain;h=100d755380d0af933a8b803d6b0c7a2411f01fab Improvement of 'Get Gnb Status’ command to fetch Enb details in O1 NETCONF client Issue-ID: RIC-898 Signed-off-by: mabelgaumkar1 Change-Id: I08d2fe08db7ef7afb4b0a3cd25e452de7f759fe0 --- diff --git a/agent/pkg/nbi/nbi.go b/agent/pkg/nbi/nbi.go index b191db5..d86de57 100755 --- a/agent/pkg/nbi/nbi.go +++ b/agent/pkg/nbi/nbi.go @@ -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) } diff --git a/agent/pkg/nbi/nbi_test.go b/agent/pkg/nbi/nbi_test.go index e1795ca..7beea03 100755 --- a/agent/pkg/nbi/nbi_test.go +++ b/agent/pkg/nbi/nbi_test.go @@ -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