From: prabhukaliswamy Date: Fri, 22 Nov 2019 07:24:09 +0000 (+0000) Subject: Added RSM platform component routes and xApp Manager interface changes X-Git-Tag: 0.3.9~1 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=be9f2684de5ed4afbe22f441cb9db5f268d05af3;p=ric-plt%2Frtmgr.git Added RSM platform component routes and xApp Manager interface changes Change-Id: Id4841dfef539c7fa88b3b22f26dc83870c341202 Signed-off-by: prabhukaliswamy --- diff --git a/Dockerfile b/Dockerfile index ab40246..6457359 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 diff --git a/RELNOTES b/RELNOTES index 77dcc72..92fde07 100644 --- 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 diff --git a/container-tag.yaml b/container-tag.yaml index 14c7346..7fdb240 100644 --- a/container-tag.yaml +++ b/container-tag.yaml @@ -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 diff --git a/pkg/nbi/nbi.go b/pkg/nbi/nbi.go index 2b9fa99..61c18c8 100644 --- a/pkg/nbi/nbi.go +++ b/pkg/nbi/nbi.go @@ -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 } diff --git a/pkg/nbi/nbi_test.go b/pkg/nbi/nbi_test.go index e309355..15a121f 100644 --- a/pkg/nbi/nbi_test.go +++ b/pkg/nbi/nbi_test.go @@ -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) { diff --git a/pkg/rpe/rpe.go b/pkg/rpe/rpe.go index a04133c..e47ca83 100644 --- a/pkg/rpe/rpe.go +++ b/pkg/rpe/rpe.go @@ -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) diff --git a/pkg/rtmgr/rtmgr.go b/pkg/rtmgr/rtmgr.go index 2ab2eb7..7476666 100644 --- a/pkg/rtmgr/rtmgr.go +++ b/pkg/rtmgr/rtmgr.go @@ -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)