X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Frpe%2Frmr.go;h=87c0e2bfe873ffd6ded20e6d7824c20d9b5aa31a;hb=refs%2Fchanges%2F86%2F10286%2F14;hp=56d2ff78a1fc9be5f9cf0702028db055484513a1;hpb=b3c466d8ab4254f6b34a1f0af926c79a92ea372b;p=ric-plt%2Frtmgr.git diff --git a/pkg/rpe/rmr.go b/pkg/rpe/rmr.go index 56d2ff7..87c0e2b 100644 --- a/pkg/rpe/rmr.go +++ b/pkg/rpe/rmr.go @@ -79,10 +79,11 @@ func (r *Rmr) generateRMRPolicies(eps rtmgr.Endpoints, rcs *rtmgr.RicComponents, group += ";" + member } } - rawrte += group if rte.RouteType == "%meid" { - rawrte += group + rte.RouteType + rawrte += "%" + "meid" + } else { + rawrte += group } rawrt = append(rawrt, rawrte+"\n") @@ -95,30 +96,35 @@ func (r *Rmr) generateRMRPolicies(eps rtmgr.Endpoints, rcs *rtmgr.RicComponents, count := 0 rawrt = append(rawrt, key+"meid_map|start\n") - keys := make(map[string]RouteIndex) + + keys := make(map[string]MeidEntry) + MEID := "" + E2TIP := "" + RECTYP := "" for _, value := range rcs.MeidMap { - if _, v := keys[key+value+"\n"]; !v { - rawrt = append(rawrt, key+value+"\n") - appendedindex := uint16(len(rawrt)-1) - keys[key+value+"\n"] = RouteIndex{true,appendedindex} - count++ + if strings.Contains(value, "mme_ar") { + tmpstr := strings.Split(value, "|") + //MEID entry for mme_ar must always contain 3 strings speartred by | i.e "mme_ar||" + MEID = strings.TrimSuffix(tmpstr[2], "\n") + E2TIP = strings.TrimSuffix(tmpstr[1], "\n") + RECTYP = "mme_ar" + } else if strings.Contains(value, "mme_del") { + tmpstr := strings.Split(value, "|") + MEID = strings.TrimSuffix(tmpstr[1], "\n") + E2TIP = "" + RECTYP = "mme_del" } - if strings.Contains(value,"mme_ar") { - tmpstr := strings.Split(value,"|") - - MEID := strings.TrimSuffix(tmpstr[2],"\n") - - mapindex := "mme_del|"+MEID+"\n" - i := keys[mapindex].index - if keys[mapindex].flag { - copy(rawrt[i:], rawrt[i+1:]) - rawrt[len(rawrt)-1] = "" - rawrt = rawrt[:len(rawrt)-1] - delete(keys,mapindex) - count-- - } - } + keys[MEID] = MeidEntry{RECTYP, E2TIP} } + + for k, v := range keys { + if v.recordtype == "mme_ar" { + rawrt = append(rawrt, key+v.recordtype+"|"+v.e2tip+"|"+k+"\n") + count++ + } + } + + rawrt = removeEmptyStrings(rawrt) rawrt = append(rawrt, key+"meid_map|end|"+strconv.Itoa(count)+"\n") xapp.Logger.Debug("rmr.GeneratePolicies returns: %v", rawrt) @@ -154,10 +160,11 @@ func (r *Rmr) generatePartialRMRPolicies(eps rtmgr.Endpoints, xappSubData *model group += ";" + member } } - rawrte += group if rte.RouteType == "%meid" { - rawrte += group + rte.RouteType + rawrte += "%" + "meid" + } else { + rawrte += group } rawrt = append(rawrt, rawrte+"\n") @@ -179,6 +186,16 @@ func (r *RmrPush) GenerateRouteTable(eps rtmgr.Endpoints) *rtmgr.RouteTable { } func (r *RmrPush) GeneratePartialPolicies(eps rtmgr.Endpoints, xappSubData *models.XappSubscriptionData, updatetype rtmgr.RMRUpdateType) *[]string { - xapp.Logger.Debug("Invoked rmr.GeneratePartialRMR, args: %v: ", eps) + xapp.Logger.Debug("Invoked rmr.GeneratePartialPolicies, args: %v: ", eps) return r.generatePartialRMRPolicies(eps, xappSubData, "", updatetype) } + +func removeEmptyStrings(s []string) []string { + var r []string + for _, str := range s { + if str != "" { + r = append(r, str) + } + } + return r +}