X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fnbi%2Frestful%2Frestful.go;fp=pkg%2Fnbi%2Frestful%2Frestful.go;h=764a143a9c4d816c525743a38ca9901d451cdc5f;hb=bfeca7737cc003f149ca8b01d1aaf484dcb762d7;hp=0000000000000000000000000000000000000000;hpb=4101d1060980858538c5600af8d9ad7a258db107;p=ric-plt%2Frtmgr.git 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()) + } +} +