Multiple E2T instance feature - Introduced APIs Delete E2T Instance and associate...
[ric-plt/rtmgr.git] / pkg / rpe / rmr.go
index dba8db6..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
 
 import (
 package rpe
 
 import (
+       "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
        "routing-manager/pkg/rtmgr"
        "strconv"
        "routing-manager/pkg/rtmgr"
        "strconv"
+       "strings"
 )
 
 type Rmr struct {
 )
 
 type Rmr struct {
@@ -46,7 +53,7 @@ func NewRmrPush() *RmrPush {
 /*
 Produces the raw route message consumable by RMR
 */
 /*
 Produces the raw route message consumable by RMR
 */
-func (r *Rmr) generateRMRPolicies(eps rtmgr.Endpoints, key string) *[]string {
+func (r *Rmr) generateRMRPolicies(eps rtmgr.Endpoints, rcs *rtmgr.RicComponents, key string) *[]string {
        rawrt := []string{key + "newrt|start\n"}
        rt := r.generateRouteTable(eps)
        for _, rte := range *rt {
        rawrt := []string{key + "newrt|start\n"}
        rt := r.generateRouteTable(eps)
        for _, rte := range *rt {
@@ -72,16 +79,39 @@ func (r *Rmr) 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, key+"newrt|end\n")
                rawrt = append(rawrt, rawrte+"\n")
        }
        rawrt = append(rawrt, key+"newrt|end\n")
-       rtmgr.Logger.Debug("rmr.GeneratePolicies 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) *[]string {
-       rtmgr.Logger.Debug("Invoked rmr.GeneratePolicies, args: %v: ", eps)
-       return r.generateRMRPolicies(eps, "")
+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 {
 }
 
 func (r *RmrPush) GenerateRouteTable(eps rtmgr.Endpoints) *rtmgr.RouteTable {