Reverting the code after releasing the image
[ric-plt/rtmgr.git] / pkg / rpe / rmr.go
index a4bf776..346644c 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.
+
+
+   This source code is part of the near-RT RIC (RAN Intelligent Controller)
+   platform project (RICP).
+
 ==================================================================================
 */
 /*
 
 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
 */
-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"}
-       rt := getRouteTable(xapps)
+       rt := r.generateRouteTable(eps)
        for _, rte := range *rt {
-               rawrte := key + "rte|" + rte.MessageType
+               rawrte := key + "mse|" + rte.MessageType
                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 == "" {
-                                       member += rx.IpSocket
+                                       member += rx.Ip + ":" + strconv.Itoa(int(rx.Port))
                                } else {
-                                       member += "," + rx.IpSocket
+                                       member += "," + rx.Ip + ":" + strconv.Itoa(int(rx.Port))
                                }
                        }
                        if group == "" {
@@ -59,9 +79,34 @@ func generateRMRPolicies(xapps *[]rtmgr.XApp) *[]string {
                        }
                }
                rawrte += group
+
+                if (rte.RouteType == "%meid") {
+                        rawrte += group + rte.RouteType
+                }
+
                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 _, value := range rcs.MeidMap {
+            meidrt += key + value + "\n"
+            count++
+        }
+        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
 }
+
+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)
+}