X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fsbi%2Fsbi.go;h=09d93813fb2608ac81fab5f25274e35afc980d8f;hb=refs%2Fchanges%2F90%2F490%2F1;hp=83b3790c7c159dba20c7ccf5303d22183cfc2354;hpb=16d84d6f7d3489e65e0a83ba9c0d5d62c3914c7f;p=ric-plt%2Frtmgr.git diff --git a/pkg/sbi/sbi.go b/pkg/sbi/sbi.go index 83b3790..09d9381 100644 --- a/pkg/sbi/sbi.go +++ b/pkg/sbi/sbi.go @@ -27,69 +27,53 @@ package sbi import ( "errors" - "fmt" - "rtmgr" "strconv" + "routing-manager/pkg/rtmgr" ) const DEFAULT_NNG_PUBSUB_SOCKET_PREFIX = "tcp://" const DEFAULT_NNG_PUBSUB_SOCKET_NUMBER = 4560 const DEFAULT_NNG_PIPELINE_SOCKET_PREFIX = "tcp://" const DEFAULT_NNG_PIPELINE_SOCKET_NUMBER = 4561 +const PLATFORMTYPE = "platformcomponenttype" var ( SupportedSbis = []*SbiEngineConfig{ &SbiEngineConfig{ - SbiEngine{ - Name: "nngpub", - Version: "v1", - Protocol: "nngpubsub", - }, - openSocket(openNngPub), - closeSocket(closeNngPub), - createEndpointSocket(createNngPubEndpointSocket), - destroyEndpointSocket(createNngPubEndpointSocket), - distributeAll(publishAll), - true, - }, + Name: "nngpush", + Version: "v1", + Protocol: "nngpipeline", + Instance: NewNngPush(), + IsAvailable: true, + }, &SbiEngineConfig{ - SbiEngine{ - Name: "nngpush", - Version: "v1", - Protocol: "nngpipeline", - }, - openSocket(openNngPush), - closeSocket(closeNngPush), - createEndpointSocket(createNngPushEndpointSocket), - destroyEndpointSocket(destroyNngPushEndpointSocket), - distributeAll(pushAll), - true, - }, + Name: "nngpub", + Version: "v1", + Protocol: "nngpubsub", + Instance: NewNngPub(), + IsAvailable: true, + }, } ) -func ListSbis() { - fmt.Printf("SBI:\n") +func GetSbi(sbiName string) (SbiEngine, error) { for _, sbi := range SupportedSbis { - if sbi.IsAvailable { - rtmgr.Logger.Info(sbi.Engine.Name + "/" + sbi.Engine.Version) + if sbi.Name == sbiName && sbi.IsAvailable { + return sbi.Instance, nil } } + return nil, errors.New("SBI:" + sbiName + " is not supported or still not available") } -func GetSbi(sbiName string) (*SbiEngineConfig, error) { - for _, sbi := range SupportedSbis { - if (*sbi).Engine.Name == sbiName && (*sbi).IsAvailable { - return sbi, nil - } - } - return nil, errors.New("SBI:" + sbiName + " is not supported or still not available") +type Sbi struct { + } -func pruneEndpointList(sbii *SbiEngineConfig) { +func (s *Sbi) pruneEndpointList(sbii SbiEngine) { for _, ep := range rtmgr.Eps { if !ep.Keepalive { - sbii.DestroyEndpointSocket(ep) + rtmgr.Logger.Debug("deleting %v",ep) + sbii.DeleteEndpoint(ep) delete(rtmgr.Eps, ep.Uuid) } else { rtmgr.Eps[ep.Uuid].Keepalive = false @@ -97,8 +81,8 @@ func pruneEndpointList(sbii *SbiEngineConfig) { } } -func UpdateEndpointList(xapps *[]rtmgr.XApp, sbii *SbiEngineConfig) { - for _, xapp := range *xapps { +func (s *Sbi) updateEndpoints(rcs *rtmgr.RicComponents, sbii SbiEngine) { + for _, xapp := range (*rcs).Xapps { for _, instance := range xapp.Instances { uuid := instance.Ip + ":" + strconv.Itoa(int(instance.Port)) if _, ok := rtmgr.Eps[uuid]; ok { @@ -116,7 +100,7 @@ func UpdateEndpointList(xapps *[]rtmgr.XApp, sbii *SbiEngineConfig) { false, true, } - if err := sbii.CreateEndpointSocket(ep); err != nil { + if err := sbii.AddEndpoint(ep); err != nil { rtmgr.Logger.Error("can't create socket for endpoint: " + ep.Name + " due to:" + err.Error()) continue } @@ -124,5 +108,36 @@ func UpdateEndpointList(xapps *[]rtmgr.XApp, sbii *SbiEngineConfig) { } } } - pruneEndpointList(sbii) + s.updatePlatformEndpoints(&((*rcs).Pcs), sbii) + s.pruneEndpointList(sbii) +} + +func (s *Sbi ) updatePlatformEndpoints(pcs *rtmgr.PlatformComponents, sbii SbiEngine) { + rtmgr.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 { + rtmgr.Eps[uuid].Keepalive = true + } else { + ep := &rtmgr.Endpoint{ + uuid, + pc.Name, + PLATFORMTYPE, + pc.Fqdn, + pc.Port, + rtmgr.PLATFORMMESSAGETYPES[pc.Name]["tx"], + rtmgr.PLATFORMMESSAGETYPES[pc.Name]["rx"], + nil, + false, + true, + } + rtmgr.Logger.Debug("ep created: %v",ep) + if err := sbii.AddEndpoint(ep); err != nil { + rtmgr.Logger.Error("can't create socket for endpoint: " + ep.Name + " due to:" + err.Error()) + continue + } + rtmgr.Eps[uuid] = ep + } + } } +