X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fsbi%2Fsbi.go;h=58fe7d8e64b94046071652f78ca2ec8033948c8e;hb=41e32c6cd23e3ac33e4b004b0fde57e371d02c81;hp=7d07160e6ea526aa68648979ee10057856f39a44;hpb=89c2cdeff5dc079ab1aca01e2e830a961095198f;p=ric-plt%2Frtmgr.git diff --git a/pkg/sbi/sbi.go b/pkg/sbi/sbi.go index 7d07160..58fe7d8 100644 --- a/pkg/sbi/sbi.go +++ b/pkg/sbi/sbi.go @@ -31,8 +31,10 @@ package sbi import ( "errors" + "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" "routing-manager/pkg/rtmgr" "strconv" + "strings" ) const DefaultNngPipelineSocketPrefix = "tcp://" @@ -64,9 +66,10 @@ type Sbi struct { } func (s *Sbi) pruneEndpointList(sbi Engine) { + xapp.Logger.Debug("pruneEndpointList invoked.") for _, ep := range rtmgr.Eps { if !ep.Keepalive { - rtmgr.Logger.Debug("deleting %v", ep) + xapp.Logger.Debug("deleting %v", ep) sbi.DeleteEndpoint(ep) delete(rtmgr.Eps, ep.Uuid) } else { @@ -76,8 +79,8 @@ func (s *Sbi) pruneEndpointList(sbi Engine) { } func (s *Sbi) updateEndpoints(rcs *rtmgr.RicComponents, sbi Engine) { - for _, xapp := range (*rcs).XApps { - for _, instance := range xapp.Instances { + for _, xapps := range (*rcs).XApps { + for _, instance := range xapps.Instances { uuid := instance.Ip + ":" + strconv.Itoa(int(instance.Port)) if _, ok := rtmgr.Eps[uuid]; ok { rtmgr.Eps[uuid].Keepalive = true @@ -85,17 +88,18 @@ func (s *Sbi) updateEndpoints(rcs *rtmgr.RicComponents, sbi Engine) { ep := &rtmgr.Endpoint{ Uuid: uuid, Name: instance.Name, - XAppType: xapp.Name, + XAppType: xapps.Name, Ip: instance.Ip, Port: instance.Port, TxMessages: instance.TxMessages, RxMessages: instance.RxMessages, + Policies: instance.Policies, Socket: nil, IsReady: false, Keepalive: true, } if err := sbi.AddEndpoint(ep); err != nil { - rtmgr.Logger.Error("can't create socket for endpoint: " + ep.Name + " due to:" + err.Error()) + xapp.Logger.Error("can't create socket for endpoint: " + ep.Name + " due to:" + err.Error()) continue } rtmgr.Eps[uuid] = ep @@ -103,11 +107,12 @@ func (s *Sbi) updateEndpoints(rcs *rtmgr.RicComponents, sbi Engine) { } } s.updatePlatformEndpoints(&((*rcs).Pcs), sbi) + s.updateE2TEndpoints(&((*rcs).E2Ts), sbi) s.pruneEndpointList(sbi) } func (s *Sbi) updatePlatformEndpoints(pcs *rtmgr.PlatformComponents, sbi Engine) { - rtmgr.Logger.Debug("updatePlatformEndpoints invoked. PCS: %v", *pcs) + xapp.Logger.Debug("updatePlatformEndpoints invoked. PCS: %v", *pcs) for _, pc := range *pcs { uuid := pc.Fqdn + ":" + strconv.Itoa(int(pc.Port)) if _, ok := rtmgr.Eps[uuid]; ok { @@ -125,12 +130,59 @@ func (s *Sbi) updatePlatformEndpoints(pcs *rtmgr.PlatformComponents, sbi Engine) IsReady: false, Keepalive: true, } - rtmgr.Logger.Debug("ep created: %v", ep) + xapp.Logger.Debug("ep created: %v", ep) if err := sbi.AddEndpoint(ep); err != nil { - rtmgr.Logger.Error("can't create socket for endpoint: " + ep.Name + " due to:" + err.Error()) + xapp.Logger.Error("can't create socket for endpoint: " + ep.Name + " due to:" + err.Error()) continue } rtmgr.Eps[uuid] = ep } } } + +func (s *Sbi) updateE2TEndpoints(E2Ts *map[string]rtmgr.E2TInstance, sbi Engine) { + xapp.Logger.Debug("updateE2TEndpoints invoked. E2T: %v", *E2Ts) + for _, e2t := range *E2Ts { + uuid := e2t.Fqdn + stringSlice := strings.Split(e2t.Fqdn, ":") + ipaddress := stringSlice[0] + port, _ := strconv.Atoi(stringSlice[1]) + if _, ok := rtmgr.Eps[uuid]; ok { + rtmgr.Eps[uuid].Keepalive = true + } else { + ep := &rtmgr.Endpoint{ + Uuid: uuid, + Name: e2t.Name, + XAppType: PlatformType, + Ip: ipaddress, + Port: uint16(port), + TxMessages: rtmgr.PLATFORMMESSAGETYPES[e2t.Name]["tx"], + RxMessages: rtmgr.PLATFORMMESSAGETYPES[e2t.Name]["rx"], + Socket: nil, + IsReady: false, + Keepalive: true, + } + xapp.Logger.Debug("ep created: %v", ep) + if err := sbi.AddEndpoint(ep); err != nil { + xapp.Logger.Error("can't create socket for endpoint: " + ep.Name + " due to:" + err.Error()) + continue + } + rtmgr.Eps[uuid] = ep + } + } +} + +func (s *Sbi) createEndpoint(payload string, sbi Engine) (*rtmgr.Endpoint) { + xapp.Logger.Debug("CreateEndPoint %v", payload) + stringSlice := strings.Split(payload, " ") + uuid := stringSlice[0] + xapp.Logger.Debug(">>> uuid %v", stringSlice[0]) + + + if _, ok := rtmgr.Eps[uuid]; ok { + ep := rtmgr.Eps[uuid] + return ep + } + + return nil +}