Multiple E2T instance feature - Introduced APIs Delete E2T Instance and associate...
[ric-plt/rtmgr.git] / pkg / rpe / rmr.go
index a4bf776..80323a3 100644 (file)
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
+
+
+   This source code is part of the near-RT RIC (RAN Intelligent Controller)
+   platform project (RICP).
+
 ==================================================================================
 */
 /*
 ==================================================================================
 */
 /*
 
 package rpe
 
 
 package rpe
 
-import "rtmgr"
+import (
+       "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
+       "routing-manager/pkg/rtmgr"
+       "strconv"
+       "strings"
+)
+
+type Rmr struct {
+       Rpe
+}
+
+type RmrPush struct {
+       Rmr
+}
+
+func NewRmrPush() *RmrPush {
+       instance := new(RmrPush)
+       return instance
+}
 
 /*
 Produces the raw route message consumable by RMR
 */
 
 /*
 Produces the raw route message consumable by RMR
 */
-func generateRMRPolicies(xapps *[]rtmgr.XApp) *[]string {
-       rtmgr.Logger.Debug("Invoked rmr.generateRMRPolicies")
-       rtmgr.Logger.Debug("args: %v", (*xapps))
-       key := "00000           "
+func (r *Rmr) generateRMRPolicies(eps rtmgr.Endpoints, rcs *rtmgr.RicComponents, key string) *[]string {
        rawrt := []string{key + "newrt|start\n"}
        rawrt := []string{key + "newrt|start\n"}
-       rt := getRouteTable(xapps)
+       rt := r.generateRouteTable(eps)
        for _, rte := range *rt {
        for _, rte := range *rt {
-               rawrte := key + "rte|" + rte.MessageType
+               rawrte := key + "mse|" + rte.MessageType
                for _, tx := range rte.TxList {
                for _, tx := range rte.TxList {
-                       rawrte += "," + tx.IpSocket
+                       rawrte += "," + tx.Ip + ":" + strconv.Itoa(int(tx.Port))
                }
                }
-               rawrte += "|"
+               rawrte += "|" + strconv.Itoa(int(rte.SubID)) + "|"
                group := ""
                for _, rxg := range rte.RxGroups {
                        member := ""
                        for _, rx := range rxg {
                                if member == "" {
                group := ""
                for _, rxg := range rte.RxGroups {
                        member := ""
                        for _, rx := range rxg {
                                if member == "" {
-                                       member += rx.IpSocket
+                                       member += rx.Ip + ":" + strconv.Itoa(int(rx.Port))
                                } else {
                                } else {
-                                       member += "," + rx.IpSocket
+                                       member += "," + rx.Ip + ":" + strconv.Itoa(int(rx.Port))
                                }
                        }
                        if group == "" {
                                }
                        }
                        if group == "" {
@@ -59,9 +79,41 @@ func generateRMRPolicies(xapps *[]rtmgr.XApp) *[]string {
                        }
                }
                rawrte += group
                        }
                }
                rawrte += group
+
+                if (rte.RouteType == "%meid") {
+                        rawrte += group + rte.RouteType
+                }
+
                rawrt = append(rawrt, rawrte+"\n")
        }
        rawrt = append(rawrt, key+"newrt|end\n")
                rawrt = append(rawrt, rawrte+"\n")
        }
        rawrt = append(rawrt, key+"newrt|end\n")
-       rtmgr.Logger.Debug("rmr.generateRMRPolicies returns: %v", rawrt)
+        count := 0
+       meidrt := key +"meid_map|start\n"
+       for e2tkey, value := range rcs.E2Ts {
+               xapp.Logger.Debug("rmr.E2T Key: %v", e2tkey)
+               xapp.Logger.Debug("rmr.E2T Value: %v", value)
+               xapp.Logger.Debug("rmr.E2T RAN List: %v", rcs.E2Ts[e2tkey].Ranlist)
+               if ( len(rcs.E2Ts[e2tkey].Ranlist) != 0 ) {
+                       ranList := strings.Join(rcs.E2Ts[e2tkey].Ranlist, " ")
+                       meidrt += key + "mme_ar|" + e2tkey + "|" + ranList + "\n"
+                       count++
+               } else {
+               xapp.Logger.Debug("rmr.E2T Empty RAN LIST for FQDN: %v", e2tkey)
+               }
+       }
+        meidrt += key+"meid_map|end|" + strconv.Itoa(count) +"\n"
+
+       rawrt = append(rawrt, meidrt)
+       xapp.Logger.Debug("rmr.GeneratePolicies returns: %v", rawrt)
+       xapp.Logger.Debug("rmr.GeneratePolicies returns: %v", rcs)
        return &rawrt
 }
        return &rawrt
 }
+
+func (r *RmrPush) GeneratePolicies(eps rtmgr.Endpoints, rcs *rtmgr.RicComponents) *[]string {
+       xapp.Logger.Debug("Invoked rmr.GeneratePolicies, args: %v: ", eps)
+       return r.generateRMRPolicies(eps, rcs, "")
+}
+
+func (r *RmrPush) GenerateRouteTable(eps rtmgr.Endpoints) *rtmgr.RouteTable {
+       return r.generateRouteTable(eps)
+}