From bfeca7737cc003f149ca8b01d1aaf484dcb762d7 Mon Sep 17 00:00:00 2001 From: wahidw Date: Fri, 21 May 2021 11:19:21 +0000 Subject: [PATCH] Refactoring some code Signed-off-by: wahidw Change-Id: Ib99a659498a17a4093926918e26b7694f0f2ff54 --- RELNOTES | 3 + cmd/rtmgr.go | 18 ++--- container-tag.yaml | 2 +- pkg/nbi/control.go | 2 +- pkg/nbi/httprestful.go | 192 +++++--------------------------------------- pkg/nbi/httprestful_test.go | 42 +++++----- pkg/nbi/restful/restful.go | 164 +++++++++++++++++++++++++++++++++++++ pkg/nbi/types.go | 3 +- 8 files changed, 217 insertions(+), 209 deletions(-) create mode 100644 pkg/nbi/restful/restful.go diff --git a/RELNOTES b/RELNOTES index 9e7ed4d..28a9cb6 100644 --- a/RELNOTES +++ b/RELNOTES @@ -1,3 +1,6 @@ +### v0.7.8 +* Refactoring rtmgr code + ### v0.7.7 * go.mod updated from 1.12 go version to 1.13 diff --git a/cmd/rtmgr.go b/cmd/rtmgr.go index 2d3d81e..834df26 100644 --- a/cmd/rtmgr.go +++ b/cmd/rtmgr.go @@ -32,31 +32,19 @@ */ package main -//TODO: change flag to pflag (won't need any argument parse) - import ( "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" "os" "os/signal" "routing-manager/pkg/nbi" - //"routing-manager/pkg/rpe" + "routing-manager/pkg/nbi/restful" "routing-manager/pkg/rtmgr" - //"routing-manager/pkg/sbi" - //"routing-manager/pkg/sdl" "syscall" "time" ) const SERVICENAME = "rtmgr" -/*type RMRUpdateType int - -const ( - XappType = iota - SubsType - E2Type -)*/ - func SetupCloseHandler() { c := make(chan os.Signal, 2) signal.Notify(c, os.Interrupt, syscall.SIGTERM) @@ -90,6 +78,10 @@ func main() { dummy_whid := int(xapp.Rmr.Openwh("rtmgr:4560")) xapp.Logger.Info("created dummy Wormhole ID for routingmanager and dummy_whid :%d", dummy_whid) + go func() { + restful.LaunchRest(xapp.Config.GetString("nbiurl")) + }() + nbi.Serve() os.Exit(0) } diff --git a/container-tag.yaml b/container-tag.yaml index 1090f9b..6ce4ec2 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.7.7 +tag: 0.7.8 diff --git a/pkg/nbi/control.go b/pkg/nbi/control.go index 2ed63d8..91f2475 100644 --- a/pkg/nbi/control.go +++ b/pkg/nbi/control.go @@ -74,7 +74,7 @@ func (c *Control) Run() { } func (c *Control) SymptomDataHandler(w http.ResponseWriter, r *http.Request) { - resp, _ := dumpDebugData() + resp, _ := DumpDebugData() xapp.Resource.SendSymptomDataJson(w, r, resp, "platform/rttable.json") } diff --git a/pkg/nbi/httprestful.go b/pkg/nbi/httprestful.go index 60d65fb..9222e0b 100644 --- a/pkg/nbi/httprestful.go +++ b/pkg/nbi/httprestful.go @@ -37,16 +37,16 @@ import ( "fmt" xfmodel "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/models" "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" - "github.com/go-openapi/loads" - "github.com/go-openapi/runtime/middleware" + //"github.com/go-openapi/loads" + //"github.com/go-openapi/runtime/middleware" "net" - "net/url" - "os" + //"net/url" + //"os" "routing-manager/pkg/models" - "routing-manager/pkg/restapi" - "routing-manager/pkg/restapi/operations" - "routing-manager/pkg/restapi/operations/debug" - "routing-manager/pkg/restapi/operations/handle" + //"routing-manager/pkg/restapi" + //"routing-manager/pkg/restapi/operations" + //"routing-manager/pkg/restapi/operations/debug" + //"routing-manager/pkg/restapi/operations/handle" "routing-manager/pkg/rpe" "routing-manager/pkg/rtmgr" "routing-manager/pkg/sdl" @@ -58,13 +58,13 @@ import ( type HttpRestful struct { Engine - LaunchRest LaunchRestHandler + //LaunchRest LaunchRestHandler RetrieveStartupData RetrieveStartupDataHandler } func NewHttpRestful() *HttpRestful { instance := new(HttpRestful) - instance.LaunchRest = launchRest + //instance.LaunchRest = launchRest instance.RetrieveStartupData = retrieveStartupData return instance } @@ -124,7 +124,7 @@ func validateXappCallbackData(callbackData *models.XappCallbackData) error { return nil } -func provideXappHandleHandlerImpl(data *models.XappCallbackData) error { +func ProvideXappHandleHandlerImpl(data *models.XappCallbackData) error { if data == nil { xapp.Logger.Debug("Received callback data") return nil @@ -217,7 +217,7 @@ func checkValidaE2TAddress(e2taddress string) bool { } -func provideXappSubscriptionHandleImpl(data *models.XappSubscriptionData) error { +func ProvideXappSubscriptionHandleImpl(data *models.XappSubscriptionData) error { xapp.Logger.Debug("Invoked provideXappSubscriptionHandleImpl") err := validateXappSubscriptionData(data) if err != nil { @@ -243,7 +243,7 @@ func subscriptionExists(data *models.XappSubscriptionData) bool { return present } -func deleteXappSubscriptionHandleImpl(data *models.XappSubscriptionData) error { +func DeleteXappSubscriptionHandleImpl(data *models.XappSubscriptionData) error { xapp.Logger.Debug("Invoked deleteXappSubscriptionHandleImpl") err := validateXappSubscriptionData(data) if err != nil { @@ -264,7 +264,7 @@ func deleteXappSubscriptionHandleImpl(data *models.XappSubscriptionData) error { } -func updateXappSubscriptionHandleImpl(data *models.XappList, subid uint16) error { +func UpdateXappSubscriptionHandleImpl(data *models.XappList, subid uint16) error { xapp.Logger.Debug("Invoked updateXappSubscriptionHandleImpl") var fqdnlist []rtmgr.FqDn @@ -291,7 +291,7 @@ func updateXappSubscriptionHandleImpl(data *models.XappList, subid uint16) error return sendRoutesToAll() } -func createNewE2tHandleHandlerImpl(data *models.E2tData) error { +func CreateNewE2tHandleHandlerImpl(data *models.E2tData) error { xapp.Logger.Debug("Invoked createNewE2tHandleHandlerImpl") err, IsDuplicate := validateE2tData(data) if IsDuplicate == true { @@ -342,7 +342,7 @@ func validateE2TAddressRANListData(assRanE2tData models.RanE2tMap) error { return nil } -func associateRanToE2THandlerImpl(data models.RanE2tMap) error { +func AssociateRanToE2THandlerImpl(data models.RanE2tMap) error { xapp.Logger.Debug("Invoked associateRanToE2THandlerImpl") err := validateE2TAddressRANListData(data) if err != nil { @@ -358,7 +358,7 @@ func associateRanToE2THandlerImpl(data models.RanE2tMap) error { } -func disassociateRanToE2THandlerImpl(data models.RanE2tMap) error { +func DisassociateRanToE2THandlerImpl(data models.RanE2tMap) error { xapp.Logger.Debug("Invoked disassociateRanToE2THandlerImpl") err := validateE2TAddressRANListData(data) if err != nil { @@ -374,7 +374,7 @@ func disassociateRanToE2THandlerImpl(data models.RanE2tMap) error { } -func deleteE2tHandleHandlerImpl(data *models.E2tDeleteData) error { +func DeleteE2tHandleHandlerImpl(data *models.E2tDeleteData) error { xapp.Logger.Debug("Invoked deleteE2tHandleHandlerImpl") err := validateDeleteE2tData(data) @@ -390,7 +390,7 @@ func deleteE2tHandleHandlerImpl(data *models.E2tDeleteData) error { } -func dumpDebugData() (models.Debuginfo, error) { +func DumpDebugData() (models.Debuginfo, error) { var response models.Debuginfo sdlEngine, _ := sdl.GetSdl("file") rpeEngine, _ := rpe.GetRpe("rmrpush") @@ -412,155 +412,6 @@ func dumpDebugData() (models.Debuginfo, error) { return response, err } -func launchRest(nbiif *string) { - swaggerSpec, err := loads.Embedded(restapi.SwaggerJSON, restapi.FlatSwaggerJSON) - if err != nil { - //log.Fatalln(err) - xapp.Logger.Error(err.Error()) - os.Exit(1) - } - nbiUrl, err := url.Parse(*nbiif) - if err != nil { - xapp.Logger.Error(err.Error()) - os.Exit(1) - } - api := operations.NewRoutingManagerAPI(swaggerSpec) - server := restapi.NewServer(api) - defer server.Shutdown() - - server.Port, err = strconv.Atoi(nbiUrl.Port()) - if err != nil { - xapp.Logger.Error("Invalid NBI RestAPI port") - os.Exit(1) - } - server.Host = "0.0.0.0" - // set handlers - api.HandleProvideXappHandleHandler = handle.ProvideXappHandleHandlerFunc( - func(params handle.ProvideXappHandleParams) middleware.Responder { - xapp.Logger.Info("Data received on Http interface") - err := provideXappHandleHandlerImpl(params.XappCallbackData) - if err != nil { - xapp.Logger.Error("RoutingManager->AppManager request Failed: " + err.Error()) - return handle.NewProvideXappHandleBadRequest() - } else { - xapp.Logger.Info("RoutingManager->AppManager request Success") - return handle.NewGetHandlesOK() - } - }) - api.HandleProvideXappSubscriptionHandleHandler = handle.ProvideXappSubscriptionHandleHandlerFunc( - func(params handle.ProvideXappSubscriptionHandleParams) middleware.Responder { - err := provideXappSubscriptionHandleImpl(params.XappSubscriptionData) - if err != nil { - xapp.Logger.Error("RoutingManager->SubManager Add Request Failed: " + err.Error()) - return handle.NewProvideXappSubscriptionHandleBadRequest() - } else { - xapp.Logger.Info("RoutingManager->SubManager Add Request Success, subid = %v, requestor = %v", *params.XappSubscriptionData.SubscriptionID, *params.XappSubscriptionData.Address) - return handle.NewGetHandlesOK() - } - }) - api.HandleDeleteXappSubscriptionHandleHandler = handle.DeleteXappSubscriptionHandleHandlerFunc( - func(params handle.DeleteXappSubscriptionHandleParams) middleware.Responder { - err := deleteXappSubscriptionHandleImpl(params.XappSubscriptionData) - if err != nil { - xapp.Logger.Error("RoutingManager->SubManager Delete Request Failed: " + err.Error()) - return handle.NewDeleteXappSubscriptionHandleNoContent() - } else { - xapp.Logger.Info("RoutingManager->SubManager Delete Request Success, subid = %v, requestor = %v", *params.XappSubscriptionData.SubscriptionID, *params.XappSubscriptionData.Address) - return handle.NewGetHandlesOK() - } - }) - api.HandleUpdateXappSubscriptionHandleHandler = handle.UpdateXappSubscriptionHandleHandlerFunc( - func(params handle.UpdateXappSubscriptionHandleParams) middleware.Responder { - err := updateXappSubscriptionHandleImpl(¶ms.XappList, params.SubscriptionID) - if err != nil { - return handle.NewUpdateXappSubscriptionHandleBadRequest() - } else { - return handle.NewUpdateXappSubscriptionHandleCreated() - } - }) - api.HandleCreateNewE2tHandleHandler = handle.CreateNewE2tHandleHandlerFunc( - func(params handle.CreateNewE2tHandleParams) middleware.Responder { - err := createNewE2tHandleHandlerImpl(params.E2tData) - if err != nil { - xapp.Logger.Error("RoutingManager->E2Manager AddE2T Request Failed: " + err.Error()) - return handle.NewCreateNewE2tHandleBadRequest() - } else { - xapp.Logger.Info("RoutingManager->E2Manager AddE2T Request Success, E2T = %v", *params.E2tData.E2TAddress) - return handle.NewCreateNewE2tHandleCreated() - } - }) - - api.HandleAssociateRanToE2tHandleHandler = handle.AssociateRanToE2tHandleHandlerFunc( - func(params handle.AssociateRanToE2tHandleParams) middleware.Responder { - err := associateRanToE2THandlerImpl(params.RanE2tList) - if err != nil { - xapp.Logger.Error("RoutingManager->E2Manager associateRanToE2T Request Failed: " + err.Error()) - return handle.NewAssociateRanToE2tHandleBadRequest() - } else { - xapp.Logger.Info("RoutingManager->E2Manager associateRanToE2T Request Success, E2T = %v", params.RanE2tList) - return handle.NewAssociateRanToE2tHandleCreated() - } - }) - - api.HandleDissociateRanHandler = handle.DissociateRanHandlerFunc( - func(params handle.DissociateRanParams) middleware.Responder { - err := disassociateRanToE2THandlerImpl(params.DissociateList) - if err != nil { - xapp.Logger.Error("RoutingManager->E2Manager DisassociateRanToE2T Request Failed: " + err.Error()) - return handle.NewDissociateRanBadRequest() - } else { - xapp.Logger.Info("RoutingManager->E2Manager DisassociateRanToE2T Request Success, E2T = %v", params.DissociateList) - return handle.NewDissociateRanCreated() - } - }) - - api.HandleDeleteE2tHandleHandler = handle.DeleteE2tHandleHandlerFunc( - func(params handle.DeleteE2tHandleParams) middleware.Responder { - err := deleteE2tHandleHandlerImpl(params.E2tData) - if err != nil { - xapp.Logger.Error("RoutingManager->E2Manager DeleteE2T Request Failed: " + err.Error()) - return handle.NewDeleteE2tHandleBadRequest() - } else { - xapp.Logger.Info("RoutingManager->E2Manager DeleteE2T Request Success, E2T = %v", *params.E2tData.E2TAddress) - return handle.NewDeleteE2tHandleCreated() - } - }) - api.DebugGetDebuginfoHandler = debug.GetDebuginfoHandlerFunc( - func(params debug.GetDebuginfoParams) middleware.Responder { - response, err := dumpDebugData() - if err != nil { - return debug.NewGetDebuginfoCreated() - } else { - return debug.NewGetDebuginfoOK().WithPayload(&response) - } - }) - api.HandleAddRmrRouteHandler = handle.AddRmrRouteHandlerFunc( - func(params handle.AddRmrRouteParams) middleware.Responder { - err := adddelrmrroute(params.RoutesList, true) - if err != nil { - return handle.NewAddRmrRouteBadRequest() - } else { - return handle.NewAddRmrRouteCreated() - } - - }) - api.HandleDelRmrRouteHandler = handle.DelRmrRouteHandlerFunc( - func(params handle.DelRmrRouteParams) middleware.Responder { - err := adddelrmrroute(params.RoutesList, false) - if err != nil { - return handle.NewDelRmrRouteBadRequest() - } else { - return handle.NewDelRmrRouteCreated() - } - }) - - // start to serve API - xapp.Logger.Info("Starting the HTTP Rest service") - if err := server.Serve(); err != nil { - xapp.Logger.Error(err.Error()) - } -} - func httpGetXApps(xmurl string) (*[]rtmgr.XApp, error) { xapp.Logger.Info("Invoked httprestful.httpGetXApps: " + xmurl) r, err := myClient.Get(xmurl) @@ -751,9 +602,6 @@ func (r *HttpRestful) Initialize(xmurl string, nbiif string, fileName string, co xapp.Logger.Error("Exiting as nbi failed to get the initial startup data from the xapp manager: " + err.Error()) return err } - go func() { - r.LaunchRest(&nbiif) - }() return nil } @@ -852,7 +700,7 @@ func PopulateSubscription(sub_list xfmodel.SubscriptionList) { } } -func adddelrmrroute(routelist models.Routelist, rtflag bool) error { +func Adddelrmrroute(routelist models.Routelist, rtflag bool) error { xapp.Logger.Info("Updating rmrroute with Route list: %v,flag: %v", routelist, rtflag) for _, rlist := range routelist { var subid int32 diff --git a/pkg/nbi/httprestful_test.go b/pkg/nbi/httprestful_test.go index 13a90ea..16ffb38 100644 --- a/pkg/nbi/httprestful_test.go +++ b/pkg/nbi/httprestful_test.go @@ -141,7 +141,7 @@ func TestValidateXappSubscriptionsData(t *testing.T) { /*err = validateE2tData(&data2)*/ //e2tchannel := make(chan *models.E2tData, 10) - _ = createNewE2tHandleHandlerImpl(&data2) + _ = CreateNewE2tHandleHandlerImpl(&data2) //defer close(e2tchannel) //test case for provideXappSubscriptionHandleImp @@ -149,23 +149,23 @@ func TestValidateXappSubscriptionsData(t *testing.T) { sdlEngine, _ = sdl.GetSdl("file") sbiEngine, _ = sbi.GetSbi("rmrpush") rpeEngine, _ = rpe.GetRpe("rmrpush") - _ = provideXappSubscriptionHandleImpl(&data1) + _ = ProvideXappSubscriptionHandleImpl(&data1) //defer close(datachannel) //test case for deleteXappSubscriptionHandleImpl - _ = deleteXappSubscriptionHandleImpl(&data1) + _ = DeleteXappSubscriptionHandleImpl(&data1) data3 := models.XappSubscriptionData{ Address: swag.String("10.55.55.5"), Port: &p, SubscriptionID: swag.Int32(123456)} //test case for deleteXappSubscriptionHandleImpl - _ = deleteXappSubscriptionHandleImpl(&data3) + _ = DeleteXappSubscriptionHandleImpl(&data3) data4 := models.XappSubscriptionData{ Address: swag.String("1.5.5.5"), Port: &p, SubscriptionID: swag.Int32(1236)} - _ = deleteXappSubscriptionHandleImpl(&data4) + _ = DeleteXappSubscriptionHandleImpl(&data4) } @@ -204,7 +204,7 @@ func TestValidateE2tDatavalid(t *testing.T) { err, _ := validateE2tData(&data) t.Log(err) - _ = createNewE2tHandleHandlerImpl(&data) + _ = CreateNewE2tHandleHandlerImpl(&data) } @@ -357,7 +357,7 @@ func TestAssociateRanToE2THandlerImpl(t *testing.T) { E2TAddress: swag.String("10.101.01.1:8098"), }, } - err := associateRanToE2THandlerImpl(data) + err := AssociateRanToE2THandlerImpl(data) if err != nil { t.Log(err) } @@ -375,7 +375,7 @@ func TestAssociateRanToE2THandlerImpl(t *testing.T) { E2TAddress: swag.String("10.101.01.1:8098"), }, } - err = associateRanToE2THandlerImpl(data) + err = AssociateRanToE2THandlerImpl(data) if err != nil { t.Log(err) } @@ -392,7 +392,7 @@ func TestDisassociateRanToE2THandlerImpl(t *testing.T) { E2TAddress: swag.String("10.101.01.1:8098"), }, } - err := disassociateRanToE2THandlerImpl(data) + err := DisassociateRanToE2THandlerImpl(data) if err != nil { t.Log(err) } @@ -409,7 +409,7 @@ func TestDisassociateRanToE2THandlerImpl(t *testing.T) { E2TAddress: swag.String("10.101.01.1:8098"), }, } - err = disassociateRanToE2THandlerImpl(data) + err = DisassociateRanToE2THandlerImpl(data) if err != nil { t.Log(err) } @@ -424,7 +424,7 @@ func TestDeleteE2tHandleHandlerImpl(t *testing.T) { data := models.E2tDeleteData{ E2TAddress: swag.String(""), } - err := deleteE2tHandleHandlerImpl(&data) + err := DeleteE2tHandleHandlerImpl(&data) if err != nil { t.Log(err) } @@ -440,7 +440,7 @@ func TestDeleteE2tHandleHandlerImpl(t *testing.T) { data = models.E2tDeleteData{ E2TAddress: swag.String("10.101.01.1:8098"), } - err = deleteE2tHandleHandlerImpl(&data) + err = DeleteE2tHandleHandlerImpl(&data) if err != nil { t.Log(err) } @@ -527,7 +527,7 @@ func TestProvideXappSubscriptionHandleImpl(t *testing.T) { Address: swag.String("10.0.0.0"), Port: &p, SubscriptionID: swag.Int32(1234)} - _ = provideXappSubscriptionHandleImpl(&data) + _ = ProvideXappSubscriptionHandleImpl(&data) } func createMockAppmgrWithData(url string, g []byte, p []byte, t []byte) *httptest.Server { @@ -592,11 +592,11 @@ func TestProvideXappHandleHandlerImpl(t *testing.T) { Version: *swag.Int64(1), Event: *swag.String("someevent"), ID: *swag.String("123456")} - err := provideXappHandleHandlerImpl(&data) + err := ProvideXappHandleHandlerImpl(&data) //Empty XappCallbackdata data1 := models.XappCallbackData{} - err = provideXappHandleHandlerImpl(&data1) + err = ProvideXappHandleHandlerImpl(&data1) t.Log(err) } @@ -723,7 +723,7 @@ func TestUpdateXappSubscription(t *testing.T) { var b models.XappList b = append(b, &xapp) - _ = updateXappSubscriptionHandleImpl(&b, 10) + _ = UpdateXappSubscriptionHandleImpl(&b, 10) //Test case when subscriptions already exist data := models.XappSubscriptionData{ @@ -735,12 +735,12 @@ func TestUpdateXappSubscription(t *testing.T) { subscriptionExists(&data) addSubscription(&rtmgr.Subs, &data) - _ = updateXappSubscriptionHandleImpl(&b, 10) + _ = UpdateXappSubscriptionHandleImpl(&b, 10) } func TestDumpDebugdata(t *testing.T) { - _, _ = dumpDebugData() + _, _ = DumpDebugData() } func TestManagerRequest(t *testing.T) { @@ -798,14 +798,14 @@ func TestAddDelRmr(t *testing.T) { listofroutes := models.AddRmrRoute{SubscriptionID: 0, SenderEndPoint: "nokia.com", MessageType: &mtype, TargetEndPoint: &tendpoint} listofroutes2 := models.AddRmrRoute{SubscriptionID: 1, SenderEndPoint: "", MessageType: &mtype, TargetEndPoint: &tendpoint} listofroutes3 := models.AddRmrRoute{MessageType: &mtype, TargetEndPoint: &tendpoint} - adddelrmrroute(routelist, false) + Adddelrmrroute(routelist, false) routelist = append(routelist, &listofroutes) routelist = append(routelist, &listofroutes2) routelist = append(routelist, &listofroutes3) routelist = append(routelist, &listofroutes3) - adddelrmrroute(routelist, true) + Adddelrmrroute(routelist, true) - adddelrmrroute(routelist, false) + Adddelrmrroute(routelist, false) } func TestPopulateSubscription(t *testing.T) { diff --git a/pkg/nbi/restful/restful.go b/pkg/nbi/restful/restful.go new file mode 100644 index 0000000..764a143 --- /dev/null +++ b/pkg/nbi/restful/restful.go @@ -0,0 +1,164 @@ +package restful + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" + "github.com/go-openapi/loads" + "github.com/go-openapi/runtime/middleware" + "net/url" + "os" + "routing-manager/pkg/nbi" + "routing-manager/pkg/restapi" + "routing-manager/pkg/restapi/operations" + "routing-manager/pkg/restapi/operations/debug" + "routing-manager/pkg/restapi/operations/handle" + "strconv" +) + +func LaunchRest(nbiif string) { + swaggerSpec, err := loads.Embedded(restapi.SwaggerJSON, restapi.FlatSwaggerJSON) + if err != nil { + //log.Fatalln(err) + xapp.Logger.Error(err.Error()) + os.Exit(1) + } + nbiUrl, err := url.Parse(nbiif) + if err != nil { + xapp.Logger.Error(err.Error()) + os.Exit(1) + } + api := operations.NewRoutingManagerAPI(swaggerSpec) + server := restapi.NewServer(api) + defer server.Shutdown() + + server.Port, err = strconv.Atoi(nbiUrl.Port()) + if err != nil { + xapp.Logger.Error("Invalid NBI RestAPI port") + os.Exit(1) + } + server.Host = "0.0.0.0" + // set handlers + api.HandleProvideXappHandleHandler = handle.ProvideXappHandleHandlerFunc( + func(params handle.ProvideXappHandleParams) middleware.Responder { + xapp.Logger.Info("Data received on Http interface") + err := nbi.ProvideXappHandleHandlerImpl(params.XappCallbackData) + if err != nil { + xapp.Logger.Error("RoutingManager->AppManager request Failed: " + err.Error()) + return handle.NewProvideXappHandleBadRequest() + } else { + xapp.Logger.Info("RoutingManager->AppManager request Success") + return handle.NewGetHandlesOK() + } + }) + api.HandleProvideXappSubscriptionHandleHandler = handle.ProvideXappSubscriptionHandleHandlerFunc( + func(params handle.ProvideXappSubscriptionHandleParams) middleware.Responder { + err := nbi.ProvideXappSubscriptionHandleImpl(params.XappSubscriptionData) + if err != nil { + xapp.Logger.Error("RoutingManager->SubManager Add Request Failed: " + err.Error()) + return handle.NewProvideXappSubscriptionHandleBadRequest() + } else { + xapp.Logger.Info("RoutingManager->SubManager Add Request Success, subid = %v, requestor = %v", *params. XappSubscriptionData.SubscriptionID, *params.XappSubscriptionData.Address) + return handle.NewGetHandlesOK() + } + }) + api.HandleDeleteXappSubscriptionHandleHandler = handle.DeleteXappSubscriptionHandleHandlerFunc( + func(params handle.DeleteXappSubscriptionHandleParams) middleware.Responder { + err := nbi.DeleteXappSubscriptionHandleImpl(params.XappSubscriptionData) + if err != nil { + xapp.Logger.Error("RoutingManager->SubManager Delete Request Failed: " + err.Error()) + return handle.NewDeleteXappSubscriptionHandleNoContent() + } else { + xapp.Logger.Info("RoutingManager->SubManager Delete Request Success, subid = %v, requestor = %v", *params. XappSubscriptionData.SubscriptionID, *params.XappSubscriptionData.Address) + return handle.NewGetHandlesOK() + } + }) + api.HandleUpdateXappSubscriptionHandleHandler = handle.UpdateXappSubscriptionHandleHandlerFunc( + func(params handle.UpdateXappSubscriptionHandleParams) middleware.Responder { + err := nbi.UpdateXappSubscriptionHandleImpl(¶ms.XappList, params.SubscriptionID) + if err != nil { + return handle.NewUpdateXappSubscriptionHandleBadRequest() + } else { + return handle.NewUpdateXappSubscriptionHandleCreated() + } + }) + api.HandleCreateNewE2tHandleHandler = handle.CreateNewE2tHandleHandlerFunc( + func(params handle.CreateNewE2tHandleParams) middleware.Responder { + err := nbi.CreateNewE2tHandleHandlerImpl(params.E2tData) + if err != nil { + xapp.Logger.Error("RoutingManager->E2Manager AddE2T Request Failed: " + err.Error()) + return handle.NewCreateNewE2tHandleBadRequest() + } else { + xapp.Logger.Info("RoutingManager->E2Manager AddE2T Request Success, E2T = %v", *params.E2tData.E2TAddress) + return handle.NewCreateNewE2tHandleCreated() + } + }) + + api.HandleAssociateRanToE2tHandleHandler = handle.AssociateRanToE2tHandleHandlerFunc( + func(params handle.AssociateRanToE2tHandleParams) middleware.Responder { + err := nbi.AssociateRanToE2THandlerImpl(params.RanE2tList) + if err != nil { + xapp.Logger.Error("RoutingManager->E2Manager associateRanToE2T Request Failed: " + err.Error()) + return handle.NewAssociateRanToE2tHandleBadRequest() + } else { + xapp.Logger.Info("RoutingManager->E2Manager associateRanToE2T Request Success, E2T = %v", params.RanE2tList) + return handle.NewAssociateRanToE2tHandleCreated() + } + }) + + api.HandleDissociateRanHandler = handle.DissociateRanHandlerFunc( + func(params handle.DissociateRanParams) middleware.Responder { + err := nbi.DisassociateRanToE2THandlerImpl(params.DissociateList) + if err != nil { + xapp.Logger.Error("RoutingManager->E2Manager DisassociateRanToE2T Request Failed: " + err.Error()) + return handle.NewDissociateRanBadRequest() + } else { + xapp.Logger.Info("RoutingManager->E2Manager DisassociateRanToE2T Request Success, E2T = %v", params.DissociateList) + return handle.NewDissociateRanCreated() + } + }) + api.HandleDeleteE2tHandleHandler = handle.DeleteE2tHandleHandlerFunc( + func(params handle.DeleteE2tHandleParams) middleware.Responder { + err := nbi.DeleteE2tHandleHandlerImpl(params.E2tData) + if err != nil { + xapp.Logger.Error("RoutingManager->E2Manager DeleteE2T Request Failed: " + err.Error()) + return handle.NewDeleteE2tHandleBadRequest() + } else { + xapp.Logger.Info("RoutingManager->E2Manager DeleteE2T Request Success, E2T = %v", *params.E2tData.E2TAddress) + return handle.NewDeleteE2tHandleCreated() + } + }) + api.DebugGetDebuginfoHandler = debug.GetDebuginfoHandlerFunc( + func(params debug.GetDebuginfoParams) middleware.Responder { + response, err := nbi.DumpDebugData() + if err != nil { + return debug.NewGetDebuginfoCreated() + } else { + return debug.NewGetDebuginfoOK().WithPayload(&response) + } + }) + api.HandleAddRmrRouteHandler = handle.AddRmrRouteHandlerFunc( + func(params handle.AddRmrRouteParams) middleware.Responder { + err := nbi.Adddelrmrroute(params.RoutesList, true) + if err != nil { + return handle.NewAddRmrRouteBadRequest() + } else { + return handle.NewAddRmrRouteCreated() + } + + }) + api.HandleDelRmrRouteHandler = handle.DelRmrRouteHandlerFunc( + func(params handle.DelRmrRouteParams) middleware.Responder { + err := nbi.Adddelrmrroute(params.RoutesList, false) + if err != nil { + return handle.NewDelRmrRouteBadRequest() + } else { + return handle.NewDelRmrRouteCreated() + } + }) + + // start to serve API + xapp.Logger.Info("Starting the HTTP Rest service") + if err := server.Serve(); err != nil { + xapp.Logger.Error(err.Error()) + } +} + diff --git a/pkg/nbi/types.go b/pkg/nbi/types.go index 722289e..8625d1c 100644 --- a/pkg/nbi/types.go +++ b/pkg/nbi/types.go @@ -41,7 +41,8 @@ type FetchAllXAppsHandler func(string) (*[]rtmgr.XApp, error) type RecvXappCallbackDataHandler func(<-chan *models.XappCallbackData) (*[]rtmgr.XApp, error) type RecvNewE2TdataHandler func(<-chan *models.E2tData) (*rtmgr.E2TInstance, string, error) type LaunchRestHandler func(*string) -type ProvideXappHandleHandlerImpl func(chan<- *models.XappCallbackData, *models.XappCallbackData) error + +//type ProvideXappHandleHandlerImpl func(chan<- *models.XappCallbackData, *models.XappCallbackData) error type RetrieveStartupDataHandler func(string, string, string, string, string, sdl.Engine) error type EngineConfig struct { -- 2.16.6