From 100d755380d0af933a8b803d6b0c7a2411f01fab Mon Sep 17 00:00:00 2001 From: mabelgaumkar1 Date: Fri, 6 May 2022 05:30:28 +0000 Subject: [PATCH] =?utf8?q?Improvement=20of=20'Get=20Gnb=20Status=E2=80=99?= =?utf8?q?=20command=20to=20fetch=20Enb=20details=20in=20O1=20NETCONF=20cl?= =?utf8?q?ient?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Issue-ID: RIC-898 Signed-off-by: mabelgaumkar1 Change-Id: I08d2fe08db7ef7afb4b0a3cd25e452de7f759fe0 --- agent/pkg/nbi/nbi.go | 79 +++++++++++++++++++++++++++++++++-------------- agent/pkg/nbi/nbi_test.go | 4 +++ 2 files changed, 59 insertions(+), 24 deletions(-) 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 -- 2.16.6