Fixed bug: MEID table not getting built during rtmgr restart; MEID table 61/6161/2
authorwahidw <abdulwahid.w@nokia.com>
Fri, 28 May 2021 17:11:50 +0000 (17:11 +0000)
committerwahidw <abdulwahid.w@nokia.com>
Sun, 30 May 2021 12:24:30 +0000 (12:24 +0000)
optimization

Signed-off-by: wahidw <abdulwahid.w@nokia.com>
Change-Id: I530b94c684848b1bd887e0c286e6b782a33474bb

pkg/nbi/httprestful.go
pkg/rpe/rmr.go
pkg/rpe/types.go

index 9222e0b..5223162 100644 (file)
@@ -451,14 +451,14 @@ func httpGetE2TList(e2murl string) (*[]rtmgr.E2tIdentity, error) {
                        xapp.Logger.Warn("Json decode failed: " + err.Error())
                }
                xapp.Logger.Info("HTTP GET: OK")
-               xapp.Logger.Debug("httprestful.httpGetXApps returns: %v", E2Tlist)
+               xapp.Logger.Debug("httprestful.httpGetE2TList returns: %v", E2Tlist)
                return &E2Tlist, err
        }
        xapp.Logger.Warn("httprestful got an unexpected http status code: %v", r.StatusCode)
        return nil, nil
 }
 
-func PopulateE2TMap(e2tDataList *[]rtmgr.E2tIdentity, e2ts map[string]rtmgr.E2TInstance, meids []string) {
+func PopulateE2TMap(e2tDataList *[]rtmgr.E2tIdentity, e2ts map[string]rtmgr.E2TInstance, meids *[]string) {
        xapp.Logger.Info("Invoked httprestful.PopulateE2TMap ")
 
        for _, e2tData := range *e2tDataList {
@@ -477,12 +477,13 @@ func PopulateE2TMap(e2tDataList *[]rtmgr.E2tIdentity, e2ts map[string]rtmgr.E2TI
                        for _, meid := range e2tData.Rannames {
                                meidar += meid + " "
                        }
-                       str += "mme_ar|" + e2tData.E2taddress + "|" + strings.TrimSuffix(meidar, " ")
+                       str = "mme_ar|" + e2tData.E2taddress + "|" + strings.TrimSuffix(meidar, " ")
+                   *meids = append(*meids, str)
                }
 
                e2ts[e2tinst.Fqdn] = e2tinst
-               meids = append(meids, str)
        }
+    xapp.Logger.Info("MEID's retrieved are %v", *meids)
 }
 
 func retrieveStartupData(xmurl string, nbiif string, fileName string, configfile string, e2murl string, sdlEngine sdl.Engine) error {
@@ -520,7 +521,7 @@ func retrieveStartupData(xmurl string, nbiif string, fileName string, configfile
                readErr = nil
                e2tDataList, err := httpGetE2TList(e2murl)
                if e2tDataList != nil && err == nil {
-                       PopulateE2TMap(e2tDataList, e2ts, meids[:])
+                       PopulateE2TMap(e2tDataList, e2ts, &meids)
                        break
                } else if err == nil {
                        readErr = errors.New("unexpected HTTP status code")
index 17c977b..56d2ff7 100644 (file)
@@ -35,7 +35,7 @@ import (
        "routing-manager/pkg/models"
        "routing-manager/pkg/rtmgr"
        "strconv"
-       //"strings"
+       "strings"
 )
 
 type Rmr struct {
@@ -94,22 +94,33 @@ func (r *Rmr) generateRMRPolicies(eps rtmgr.Endpoints, rcs *rtmgr.RicComponents,
        rawrt = append(rawrt, key+"newrt|end\n")
        count := 0
 
-       //meidrt := key + "meid_map|start\n"
-       //meidrt := []string{key + "meid_map|start\n"}
        rawrt = append(rawrt, key+"meid_map|start\n")
+       keys := make(map[string]RouteIndex)
        for _, value := range rcs.MeidMap {
-               //meidrt += key + value + "\n"
-               rawrt = append(rawrt, key+value+"\n")
-               count++
+               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 := 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--
+                   }
+        }
        }
        rawrt = append(rawrt, key+"meid_map|end|"+strconv.Itoa(count)+"\n")
-       //meidrt += key+"meid_map|end|" + strconv.Itoa(count) +"\n"
-
-       /*for _, value := range meidrt {
-               rawrt = append(meidrt, value)
-       }*/
 
-       //rawrt = append(rawrt, meidrt)
        xapp.Logger.Debug("rmr.GeneratePolicies returns: %v", rawrt)
        xapp.Logger.Debug("rmr.GeneratePolicies returns: %v", rcs)
        return &rawrt
index 2d466d3..95cdf01 100644 (file)
@@ -50,3 +50,8 @@ type Engine interface {
        GenerateRouteTable(rtmgr.Endpoints) *rtmgr.RouteTable
        GeneratePartialPolicies(eps rtmgr.Endpoints, xappSubData *models.XappSubscriptionData, updatetype rtmgr.RMRUpdateType) *[]string
 }
+
+type RouteIndex struct {
+       flag  bool
+       index uint16
+}