Added RSM platform component routes and xApp Manager interface changes 31/1731/2
authorprabhukaliswamy <prabhu.k@nokia.com>
Fri, 22 Nov 2019 07:24:09 +0000 (07:24 +0000)
committerPrabhu K <prabhu.k@nokia.com>
Fri, 22 Nov 2019 08:47:44 +0000 (08:47 +0000)
Change-Id: Id4841dfef539c7fa88b3b22f26dc83870c341202
Signed-off-by: prabhukaliswamy <prabhu.k@nokia.com>
Dockerfile
RELNOTES
container-tag.yaml
pkg/nbi/nbi.go
pkg/nbi/nbi_test.go
pkg/rpe/rpe.go
pkg/rtmgr/rtmgr.go

index ab40246..6457359 100644 (file)
@@ -56,12 +56,11 @@ RUN go install ./cmd/rtmgr.go
 # UT intermediate container
 FROM rtmgrbuild as rtmgrut
 RUN go test ./pkg/sbi ./pkg/rpe ./pkg/nbi ./pkg/sdl -cover -race
-
 # Final, executable container
 FROM ubuntu:16.04
 COPY --from=rtmgrbuild /go/bin/rtmgr /
 COPY --from=rtmgrbuild /run_rtmgr.sh /
-RUN apt update && apt install -y iputils-ping net-tools curl tcpdump
+RUN apt-get update && apt-get install -y iputils-ping net-tools curl tcpdump
 RUN mkdir /db && touch /db/rt.json && chmod 777 /db/rt.json
 RUN chmod 755 /run_rtmgr.sh
 CMD /run_rtmgr.sh
index 77dcc72..92fde07 100644 (file)
--- a/RELNOTES
+++ b/RELNOTES
@@ -1,3 +1,10 @@
+### v0.3.9
+* Added RSM platform component routes for message types RAN_CONNECTED, RAN_RESTARTED, RAN_RECONFIGURED, RIC_RES_STATUS_REQ,RIC_RES_STATUS_RESP and RIC_RES_STATUS_FAILURE
+* xApp manager interface changes for Subscription Request API
+
+### v0.3.8
+* Adding docs and updating release notes for routing manager
+
 ### v0.3.7
 * Fix routes for RIC_ENDC_X2_SETUP_REQ, RIC_ENDC_X2_SETUP_RESP and RIC_ENDC_X2_SETUP_FAILURE
 
index 14c7346..7fdb240 100644 (file)
@@ -2,4 +2,4 @@
 # By default this file is in the docker build directory,
 # but the location can configured in the JJB template.
 ---
-tag: 0.3.8
+tag: 0.3.9
index 2b9fa99..61c18c8 100644 (file)
@@ -70,13 +70,17 @@ func GetNbi(nbiName string) (Engine, error) {
 
 func CreateSubReq(restUrl string, restPort string) *appmgr_model.SubscriptionRequest {
        // TODO: parameterize function
-       subReq := appmgr_model.SubscriptionRequest{
-               TargetURL:  swag.String(restUrl + ":" + restPort + "/ric/v1/handles/xapp-handle/"),
-               EventType:  swag.String("all"),
+       subData := appmgr_model.SubscriptionData{
+               TargetURL: swag.String(restUrl + ":" + restPort + "/ric/v1/handles/xapp-handle/"),
+               EventType: appmgr_model.EventTypeAll,
                MaxRetries: swag.Int64(5),
                RetryTimer: swag.Int64(10),
        }
 
+       subReq := appmgr_model.SubscriptionRequest{
+               Data: &subData,
+       }
+
        return &subReq
 }
 
index e309355..15a121f 100644 (file)
@@ -55,30 +55,35 @@ func TestGetNbi(t *testing.T) {
                }
        }
 }
-
 func TestCreateSubReq(t *testing.T) {
-       var subReq = appmgr_model.SubscriptionRequest{
+       var subData = appmgr_model.SubscriptionData{
                TargetURL:  swag.String("localhost:8000/ric/v1/handles/xapp-handle/"),
-               EventType:  swag.String("all"),
+               EventType:  appmgr_model.EventTypeAll,
                MaxRetries: swag.Int64(5),
                RetryTimer: swag.Int64(10),
        }
+        subReq := appmgr_model.SubscriptionRequest{
+                Data: &subData,
+        }
        subReq2 := CreateSubReq("localhost", "8000")
        if reflect.TypeOf(subReq) != reflect.TypeOf(*subReq2) {
                t.Errorf("Invalid type, got: %v, want: %v.", reflect.TypeOf(subReq), reflect.TypeOf(*subReq2))
        }
-       if *(subReq.TargetURL) != *(subReq2.TargetURL) {
-               t.Errorf("Invalid TargetURL generated, got %v, want %v", *subReq.TargetURL, *subReq2.TargetURL)
+       if *(subReq.Data.TargetURL) != *(subReq2.Data.TargetURL) {
+               t.Errorf("Invalid TargetURL generated, got %v, want %v", *subReq.Data.TargetURL, *subReq2.Data.TargetURL)
        }
-       if *(subReq.EventType) != *(subReq2.EventType) {
-               t.Errorf("Invalid EventType generated, got %v, want %v", *subReq.EventType, *subReq2.EventType)
+
+       if (subReq.Data.EventType) != (subReq2.Data.EventType) {
+               t.Errorf("Invalid EventType generated, got %v, want %v", subReq.Data.EventType, subReq2.Data.EventType)
        }
-       if *(subReq.MaxRetries) != *(subReq2.MaxRetries) {
-               t.Errorf("Invalid MaxRetries generated, got %v, want %v", *subReq.MaxRetries, *subReq2.MaxRetries)
+
+       if *(subReq.Data.MaxRetries) != *(subReq2.Data.MaxRetries) {
+               t.Errorf("Invalid MaxRetries generated, got %v, want %v", *subReq.Data.MaxRetries, *subReq2.Data.MaxRetries)
        }
-       if *(subReq.RetryTimer) != *(subReq2.RetryTimer) {
-               t.Errorf("Invalid RetryTimer generated, got %v, want %v", *subReq.RetryTimer, *subReq2.RetryTimer)
+       if *(subReq.Data.RetryTimer) != *(subReq2.Data.RetryTimer) {
+               t.Errorf("Invalid RetryTimer generated, got %v, want %v", *subReq.Data.RetryTimer, *subReq2.Data.RetryTimer)
        }
+
 }
 
 func TestPostSubReq(t *testing.T) {
index a04133c..e47ca83 100644 (file)
@@ -136,7 +136,7 @@ func (r *Rpe) generateSubscriptionRoutes(e2TermEp *rtmgr.Endpoint, subManEp *rtm
        }
 }
 
-func (r *Rpe) generatePlatformRoutes(e2TermEp *rtmgr.Endpoint, subManEp *rtmgr.Endpoint, e2ManEp *rtmgr.Endpoint, ueManEp *rtmgr.Endpoint, routeTable *rtmgr.RouteTable) {
+func (r *Rpe) generatePlatformRoutes(e2TermEp *rtmgr.Endpoint, subManEp *rtmgr.Endpoint, e2ManEp *rtmgr.Endpoint, ueManEp *rtmgr.Endpoint, rsmEp *rtmgr.Endpoint, routeTable *rtmgr.RouteTable) {
        rtmgr.Logger.Debug("rpe.generatePlatformRoutes invoked")
        //Platform Routes --- Subscription Routes
        //Subscription Manager -> E2 Termination
@@ -178,6 +178,15 @@ func (r *Rpe) generatePlatformRoutes(e2TermEp *rtmgr.Endpoint, subManEp *rtmgr.E
        r.addRoute("RIC_ERROR_INDICATION", e2TermEp, e2ManEp, routeTable, -1)
        r.addRoute("RIC_ENB_CONF_UPDATE", e2TermEp, e2ManEp, routeTable, -1)
        r.addRoute("RIC_ENB_LOAD_INFORMATION", e2TermEp, e2ManEp, routeTable, -1)
+       //E2 Manager -> Resource Status Manager
+       r.addRoute("RAN_CONNECTED", e2ManEp, rsmEp, routeTable, -1)
+       r.addRoute("RAN_RESTARTED", e2ManEp, rsmEp, routeTable, -1)
+       r.addRoute("RAN_RECONFIGURED", e2ManEp, rsmEp, routeTable, -1)
+       //Resource Status Manager -> E2 Termination
+       r.addRoute("RIC_RES_STATUS_REQ", rsmEp, e2TermEp, routeTable, -1)
+       //E2 Termination -> Resource Status Manager
+       r.addRoute("RIC_RES_STATUS_RESP", e2TermEp, rsmEp, routeTable, -1)
+       r.addRoute("RIC_RES_STATUS_FAILURE", e2TermEp, rsmEp, routeTable, -1)
 }
 
 func (r *Rpe) generateRouteTable(endPointList rtmgr.Endpoints) *rtmgr.RouteTable {
@@ -204,7 +213,12 @@ func (r *Rpe) generateRouteTable(endPointList rtmgr.Endpoints) *rtmgr.RouteTable
                rtmgr.Logger.Error("Platform component not found: %v", "UE Manger")
                rtmgr.Logger.Debug("Endpoints: %v", endPointList)
        }
-       r.generatePlatformRoutes(e2TermEp, subManEp, e2ManEp, ueManEp, routeTable)
+       rsmEp := getEndpointByName(&endPointList, "RSM")
+       if rsmEp == nil {
+               rtmgr.Logger.Error("Platform component not found: %v", "Resource Status Manager")
+               rtmgr.Logger.Debug("Endpoints: %v", endPointList)
+       }
+       r.generatePlatformRoutes(e2TermEp, subManEp, e2ManEp, ueManEp, rsmEp, routeTable)
 
        for _, endPoint := range endPointList {
                rtmgr.Logger.Debug("Endpoint: %v, xAppType: %v", endPoint.Name, endPoint.XAppType)
index 2ab2eb7..7476666 100644 (file)
@@ -47,6 +47,9 @@ var (
                "X2Setup":                               "6",
                "Reset":                                 "7",
                "E2_TERM_INIT":                       "1100",
+               "RAN_CONNECTED":                      "1200",
+               "RAN_RESTARTED":                      "1210",
+               "RAN_RECONFIGURED":                   "1220",
                "RIC_SCTP_CLEAR_ALL":                 "1090",
                "RIC_SCTP_CONNECTION_FAILURE":        "1080",
                "RIC_X2_SETUP":                      "10000",
@@ -103,6 +106,7 @@ var (
                "E2MAN":  {"tx": []string{"RIC_X2_SETUP_REQ", "RIC_X2_SETUP_RESP", "RIC_X2_SETUP_FAILURE", "RIC_X2_RESET", "RIC_X2_RESET_RESP", "RIC_ENDC_X2_SETUP_REQ", "RIC_ENDC_X2_SETUP_RESP", "RIC_ENDC_X2_SETUP_FAILURE"}, "rx": []string{"RIC_X2_SETUP_REQ", "RIC_X2_SETUP_RESP", "RIC_X2_SETUP_FAILURE", "RIC_X2_RESET", "RIC_X2_RESET_RESP", "RIC_ENDC_X2_SETUP_REQ", "RIC_ENDC_X2_SETUP_RESP", "RIC_ENDC_X2_SETUP_FAILURE"}},
                "SUBMAN": {"tx": []string{"RIC_SUB_REQ", "RIC_SUB_DEL_REQ"}, "rx": []string{"RIC_SUB_RESP", "RIC_SUB_FAILURE", "RIC_SUB_DEL_RESP", "RIC_SUB_DEL_FAILURE"}},
                "UEMAN":  {"tx": []string{"RIC_CONTROL_REQ"}, "rx": []string{}},
+               "RSM":    {"tx": []string{"RIC_RES_STATUS_REQ"}, "rx": []string{"RAN_CONNECTED", "RAN_RESTARTED", "RAN_RECONFIGURED"}},
        }
 
        Logger = lumber.NewConsoleLogger(lumber.INFO)