Creating dymanic endpoints(Eps) and distributing routes to those endpoints on upgrad...
[ric-plt/rtmgr.git] / pkg / sbi / sbi.go
index be415f3..c576c34 100644 (file)
@@ -31,25 +31,25 @@ package sbi
 
 import (
        "errors"
-       "fmt"
+       //"fmt"
        "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
-       "net"
+       //"net"
        "routing-manager/pkg/rtmgr"
        "strconv"
        "strings"
 )
 
-const DefaultNngPipelineSocketPrefix = "tcp://"
-const DefaultNngPipelineSocketNumber = 4561
+const DefaultRmrPipelineSocketPrefix = "tcp://"
+const DefaultRmrPipelineSocketNumber = 4561
 const PlatformType = "platform"
 
 var (
        SupportedSbis = []*EngineConfig{
                {
-                       Name:        "nngpush",
+                       Name:        "rmrpush",
                        Version:     "v1",
-                       Protocol:    "nngpipeline",
-                       Instance:    NewNngPush(),
+                       Protocol:    "rmrpipeline",
+                       Instance:    NewRmrPush(),
                        IsAvailable: true,
                },
        }
@@ -75,7 +75,9 @@ func (s *Sbi) pruneEndpointList(sbi Engine) {
                        sbi.DeleteEndpoint(ep)
                        delete(rtmgr.Eps, ep.Uuid)
                } else {
-                       rtmgr.Eps[ep.Uuid].Keepalive = false
+                       if rtmgr.Eps[ep.Uuid] != nil {
+                               rtmgr.Eps[ep.Uuid].Keepalive = false
+                       }
                }
        }
 }
@@ -126,8 +128,8 @@ func (s *Sbi) updatePlatformEndpoints(pcs *rtmgr.PlatformComponents, sbi Engine)
                                XAppType:   PlatformType,
                                Ip:         pc.Fqdn,
                                Port:       pc.Port,
-                               TxMessages: rtmgr.PLATFORMMESSAGETYPES[pc.Name]["tx"],
-                               RxMessages: rtmgr.PLATFORMMESSAGETYPES[pc.Name]["rx"],
+                               //TxMessages: rtmgr.PLATFORMMESSAGETYPES[pc.Name]["tx"],
+                               //RxMessages: rtmgr.PLATFORMMESSAGETYPES[pc.Name]["rx"],
                                Socket:     nil,
                                IsReady:    false,
                                Keepalive:  true,
@@ -158,8 +160,8 @@ func (s *Sbi) updateE2TEndpoints(E2Ts *map[string]rtmgr.E2TInstance, sbi Engine)
                                XAppType:   PlatformType,
                                Ip:         ipaddress,
                                Port:       uint16(port),
-                               TxMessages: rtmgr.PLATFORMMESSAGETYPES[e2t.Name]["tx"],
-                               RxMessages: rtmgr.PLATFORMMESSAGETYPES[e2t.Name]["rx"],
+                               //TxMessages: rtmgr.PLATFORMMESSAGETYPES[e2t.Name]["tx"],
+                               //RxMessages: rtmgr.PLATFORMMESSAGETYPES[e2t.Name]["rx"],
                                Socket:     nil,
                                IsReady:    false,
                                Keepalive:  true,
@@ -174,19 +176,19 @@ func (s *Sbi) updateE2TEndpoints(E2Ts *map[string]rtmgr.E2TInstance, sbi Engine)
        }
 }
 
-func (s *Sbi) createEndpoint(payload string, sbi Engine) *rtmgr.Endpoint {
+func (s *Sbi) createEndpoint(payload string,rmrsrc 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])
+//     stringSlice := strings.Split(payload, " ")
+//     uuid := stringSlice[0]
+//     xapp.Logger.Debug(">>> uuid %v", stringSlice[0])
 
-       if _, ok := rtmgr.Eps[uuid]; ok {
+/*     if _, ok := rtmgr.Eps[uuid]; ok {
                ep := rtmgr.Eps[uuid]
                return ep
-       }
+       }*/
 
        /* incase the stored Endpoint list is in the form of IP:port*/
-       stringsubsplit := strings.Split(uuid, ":")
+/*     stringsubsplit := strings.Split(uuid, ":")
        addr, err := net.LookupIP(stringsubsplit[0])
        if err == nil {
                convertedUuid := fmt.Sprintf("%s:%s", addr[0], stringsubsplit[1])
@@ -195,7 +197,18 @@ func (s *Sbi) createEndpoint(payload string, sbi Engine) *rtmgr.Endpoint {
                        ep := rtmgr.Eps[convertedUuid]
                        return ep
                }
+       }*/
+
+       /* Create a new mapping, this case is assumed for multiple process sending RMR request from a container */
+       srcString := strings.Split(rmrsrc," ")
+       srcStringSlice := strings.Split(srcString[0],"=")
+       Whid := int(xapp.Rmr.Openwh(srcStringSlice[1]))
+
+       xapp.Logger.Info("Wormhole Id created is %d for EndPoint %s",Whid,srcStringSlice[1])
+       if Whid > 0 {
+               rtmgr.RmrEp[srcStringSlice[1]] = Whid
+               xapp.Logger.Info("received %s and mapped to Whid = %d",srcStringSlice[1],Whid)
        }
 
        return nil
-}
+ }