Removed Book Keeping of RMR CTL ports. Route Distribution only on demand
[ric-plt/rtmgr.git] / pkg / rpe / rmr.go
index ca16772..446d7ec 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
 
 import (
 package rpe
 
 import (
-       "rtmgr"
+       "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
+       "routing-manager/pkg/rtmgr"
        "strconv"
        "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(eps rtmgr.Endpoints, key string) *[]string {
-       rtmgr.Logger.Debug("Invoked rmr.generateRMRPolicies")
-       rtmgr.Logger.Debug("args: %v", eps)
+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(eps)
+       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 {
                        rawrte += "," + tx.Ip + ":" + strconv.Itoa(int(tx.Port))
                }
                for _, tx := range rte.TxList {
                        rawrte += "," + tx.Ip + ":" + strconv.Itoa(int(tx.Port))
                }
-               rawrte += "|"
+               rawrte += "|" + strconv.Itoa(int(rte.SubID)) + "|"
                group := ""
                for _, rxg := range rte.RxGroups {
                        member := ""
                group := ""
                for _, rxg := range rte.RxGroups {
                        member := ""
@@ -61,17 +79,38 @@ func generateRMRPolicies(eps rtmgr.Endpoints, key string) *[]string {
                        }
                }
                rawrte += group
                        }
                }
                rawrte += group
+
+                if (rte.RouteType == "%meid") {
+                        rawrte += group + rte.RouteType
+                }
+
                rawrt = append(rawrt, rawrte+"\n")
        }
                rawrt = append(rawrt, rawrte+"\n")
        }
+       for _,val := range rtmgr.DynamicRouteList {
+               rawrt = append(rawrt,val)
+       }
+
        rawrt = append(rawrt, key+"newrt|end\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
 }
 
        return &rawrt
 }
 
-func generateRMRPubPolicies(eps rtmgr.Endpoints) *[]string {
-       return generateRMRPolicies(eps, "00000           ")
+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 generateRMRPushPolicies(eps rtmgr.Endpoints) *[]string {
-       return generateRMRPolicies(eps, "")
+func (r *RmrPush) GenerateRouteTable(eps rtmgr.Endpoints) *rtmgr.RouteTable {
+       return r.generateRouteTable(eps)
 }
 }