X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Frpe%2Frmr.go;h=17c977b42d66cd7b7332b20af0dd88763d370e60;hb=04f29bf264dc8d336756cda9499d85d197a487f7;hp=9cda9d9cdf601bf53e823937da9921423c117a67;hpb=e90dddabfdb89ff8cd7ed52dba4849efd2d8edf9;p=ric-plt%2Frtmgr.git diff --git a/pkg/rpe/rmr.go b/pkg/rpe/rmr.go index 9cda9d9..17c977b 100644 --- a/pkg/rpe/rmr.go +++ b/pkg/rpe/rmr.go @@ -14,6 +14,11 @@ 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). + ================================================================================== */ /* @@ -26,27 +31,21 @@ package rpe import ( + "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" + "routing-manager/pkg/models" "routing-manager/pkg/rtmgr" "strconv" + //"strings" ) type Rmr struct { Rpe } -type RmrPub struct { - Rmr -} - type RmrPush struct { Rmr } -func NewRmrPub() *RmrPub { - instance := new(RmrPub) - return instance -} - func NewRmrPush() *RmrPush { instance := new(RmrPush) return instance @@ -55,9 +54,9 @@ func NewRmrPush() *RmrPush { /* 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.getRouteTable(eps) + rt := r.generateRouteTable(eps) for _, rte := range *rt { rawrte := key + "mse|" + rte.MessageType for _, tx := range rte.TxList { @@ -81,28 +80,94 @@ func (r *Rmr) generateRMRPolicies(eps rtmgr.Endpoints, key string) *[]string { } } rawrte += group + + if rte.RouteType == "%meid" { + rawrte += group + rte.RouteType + } + rawrt = append(rawrt, rawrte+"\n") } + for _, val := range rtmgr.DynamicRouteList { + rawrt = append(rawrt, val) + } + rawrt = append(rawrt, key+"newrt|end\n") - rtmgr.Logger.Debug("rmr.GeneratePolicies returns: %v", rawrt) + count := 0 + + //meidrt := key + "meid_map|start\n" + //meidrt := []string{key + "meid_map|start\n"} + rawrt = append(rawrt, key+"meid_map|start\n") + for _, value := range rcs.MeidMap { + //meidrt += key + value + "\n" + rawrt = append(rawrt, key+value+"\n") + 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 } -func (r *RmrPub) GeneratePolicies(eps rtmgr.Endpoints) *[]string { - rtmgr.Logger.Debug("Invoked rmr.GeneratePolicies, args: %v: ", eps) - return r.generateRMRPolicies(eps, "00000 ") -} +/* +Produces the raw route message consumable by RMR +*/ +func (r *Rmr) generatePartialRMRPolicies(eps rtmgr.Endpoints, xappSubData *models.XappSubscriptionData, key string, updatetype rtmgr.RMRUpdateType) *[]string { + rawrt := []string{key + "updatert|start\n"} + rt := r.generatePartialRouteTable(eps, xappSubData, updatetype) + for _, rte := range *rt { + rawrte := key + "mse|" + rte.MessageType + for _, tx := range rte.TxList { + rawrte += "," + tx.Ip + ":" + strconv.Itoa(int(tx.Port)) + } + rawrte += "|" + strconv.Itoa(int(rte.SubID)) + "|" + group := "" + for _, rxg := range rte.RxGroups { + member := "" + for _, rx := range rxg { + if member == "" { + member += rx.Ip + ":" + strconv.Itoa(int(rx.Port)) + } else { + member += "," + rx.Ip + ":" + strconv.Itoa(int(rx.Port)) + } + } + if group == "" { + group += member + } else { + group += ";" + member + } + } + rawrte += group -func (r *RmrPush) GeneratePolicies(eps rtmgr.Endpoints) *[]string { - rtmgr.Logger.Debug("Invoked rmr.GeneratePolicies, args: %v: ", eps) - return r.generateRMRPolicies(eps, "") -} + if rte.RouteType == "%meid" { + rawrte += group + rte.RouteType + } -func (r *RmrPub) GetRouteTable(eps rtmgr.Endpoints) *rtmgr.RouteTable { - return r.getRouteTable(eps) + rawrt = append(rawrt, rawrte+"\n") + } + + rawrt = append(rawrt, key+"updatert|end\n") + //count := 0 + + xapp.Logger.Debug("rmr.GeneratePolicies returns: %v", rawrt) + 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) GetRouteTable(eps rtmgr.Endpoints) *rtmgr.RouteTable { - return r.getRouteTable(eps) +func (r *RmrPush) GenerateRouteTable(eps rtmgr.Endpoints) *rtmgr.RouteTable { + return r.generateRouteTable(eps) } +func (r *RmrPush) GeneratePartialPolicies(eps rtmgr.Endpoints, xappSubData *models.XappSubscriptionData, updatetype rtmgr.RMRUpdateType) *[]string { + xapp.Logger.Debug("Invoked rmr.GeneratePartialRMR, args: %v: ", eps) + return r.generatePartialRMRPolicies(eps, xappSubData, "", updatetype) +}