Refactoring some code
[ric-plt/rtmgr.git] / pkg / nbi / restful / restful.go
1 package restful
2
3 import (
4         "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
5         "github.com/go-openapi/loads"
6         "github.com/go-openapi/runtime/middleware"
7         "net/url"
8         "os"
9         "routing-manager/pkg/nbi"
10         "routing-manager/pkg/restapi"
11         "routing-manager/pkg/restapi/operations"
12         "routing-manager/pkg/restapi/operations/debug"
13         "routing-manager/pkg/restapi/operations/handle"
14         "strconv"
15 )
16
17 func LaunchRest(nbiif string) {
18     swaggerSpec, err := loads.Embedded(restapi.SwaggerJSON, restapi.FlatSwaggerJSON)
19     if err != nil {
20         //log.Fatalln(err)
21         xapp.Logger.Error(err.Error())
22         os.Exit(1)
23     }
24     nbiUrl, err := url.Parse(nbiif)
25     if err != nil {
26         xapp.Logger.Error(err.Error())
27         os.Exit(1)
28     }
29     api := operations.NewRoutingManagerAPI(swaggerSpec)
30     server := restapi.NewServer(api)
31     defer server.Shutdown()
32
33     server.Port, err = strconv.Atoi(nbiUrl.Port())
34     if err != nil {
35         xapp.Logger.Error("Invalid NBI RestAPI port")
36         os.Exit(1)
37     }
38     server.Host = "0.0.0.0"
39    // set handlers
40     api.HandleProvideXappHandleHandler = handle.ProvideXappHandleHandlerFunc(
41         func(params handle.ProvideXappHandleParams) middleware.Responder {
42             xapp.Logger.Info("Data received on Http interface")
43             err := nbi.ProvideXappHandleHandlerImpl(params.XappCallbackData)
44             if err != nil {
45                 xapp.Logger.Error("RoutingManager->AppManager request Failed: " + err.Error())
46                 return handle.NewProvideXappHandleBadRequest()
47             } else {
48                 xapp.Logger.Info("RoutingManager->AppManager request Success")
49                 return handle.NewGetHandlesOK()
50             }
51         })
52     api.HandleProvideXappSubscriptionHandleHandler = handle.ProvideXappSubscriptionHandleHandlerFunc(
53         func(params handle.ProvideXappSubscriptionHandleParams) middleware.Responder {
54             err := nbi.ProvideXappSubscriptionHandleImpl(params.XappSubscriptionData)
55             if err != nil {
56                 xapp.Logger.Error("RoutingManager->SubManager Add Request Failed: " + err.Error())
57                 return handle.NewProvideXappSubscriptionHandleBadRequest()
58             } else {
59                 xapp.Logger.Info("RoutingManager->SubManager Add Request Success, subid = %v, requestor = %v", *params.                  XappSubscriptionData.SubscriptionID, *params.XappSubscriptionData.Address)
60                 return handle.NewGetHandlesOK()
61             }
62         })
63     api.HandleDeleteXappSubscriptionHandleHandler = handle.DeleteXappSubscriptionHandleHandlerFunc(
64         func(params handle.DeleteXappSubscriptionHandleParams) middleware.Responder {
65             err := nbi.DeleteXappSubscriptionHandleImpl(params.XappSubscriptionData)
66             if err != nil {
67                 xapp.Logger.Error("RoutingManager->SubManager Delete Request Failed: " + err.Error())
68                 return handle.NewDeleteXappSubscriptionHandleNoContent()
69            } else {
70                 xapp.Logger.Info("RoutingManager->SubManager Delete Request Success, subid = %v, requestor = %v", *params.               XappSubscriptionData.SubscriptionID, *params.XappSubscriptionData.Address)
71                 return handle.NewGetHandlesOK()
72             }
73         })
74     api.HandleUpdateXappSubscriptionHandleHandler = handle.UpdateXappSubscriptionHandleHandlerFunc(
75         func(params handle.UpdateXappSubscriptionHandleParams) middleware.Responder {
76             err := nbi.UpdateXappSubscriptionHandleImpl(&params.XappList, params.SubscriptionID)
77             if err != nil {
78                 return handle.NewUpdateXappSubscriptionHandleBadRequest()
79             } else {
80                 return handle.NewUpdateXappSubscriptionHandleCreated()
81             }
82         })
83     api.HandleCreateNewE2tHandleHandler = handle.CreateNewE2tHandleHandlerFunc(
84         func(params handle.CreateNewE2tHandleParams) middleware.Responder {
85             err := nbi.CreateNewE2tHandleHandlerImpl(params.E2tData)
86             if err != nil {
87                 xapp.Logger.Error("RoutingManager->E2Manager AddE2T Request Failed: " + err.Error())
88                 return handle.NewCreateNewE2tHandleBadRequest()
89             } else {
90                 xapp.Logger.Info("RoutingManager->E2Manager AddE2T Request Success, E2T = %v", *params.E2tData.E2TAddress)
91                 return handle.NewCreateNewE2tHandleCreated()
92             }
93         })
94
95     api.HandleAssociateRanToE2tHandleHandler = handle.AssociateRanToE2tHandleHandlerFunc(
96         func(params handle.AssociateRanToE2tHandleParams) middleware.Responder {
97             err := nbi.AssociateRanToE2THandlerImpl(params.RanE2tList)
98             if err != nil {
99                 xapp.Logger.Error("RoutingManager->E2Manager associateRanToE2T Request Failed: " + err.Error())
100                 return handle.NewAssociateRanToE2tHandleBadRequest()
101             } else {
102                 xapp.Logger.Info("RoutingManager->E2Manager associateRanToE2T Request Success, E2T = %v", params.RanE2tList)
103                 return handle.NewAssociateRanToE2tHandleCreated()
104             }
105         })
106
107     api.HandleDissociateRanHandler = handle.DissociateRanHandlerFunc(
108         func(params handle.DissociateRanParams) middleware.Responder {
109             err := nbi.DisassociateRanToE2THandlerImpl(params.DissociateList)
110             if err != nil {
111                 xapp.Logger.Error("RoutingManager->E2Manager DisassociateRanToE2T Request Failed: " + err.Error())
112                 return handle.NewDissociateRanBadRequest()
113             } else {
114                 xapp.Logger.Info("RoutingManager->E2Manager DisassociateRanToE2T Request Success, E2T = %v", params.DissociateList)
115                 return handle.NewDissociateRanCreated()
116             }
117         })
118    api.HandleDeleteE2tHandleHandler = handle.DeleteE2tHandleHandlerFunc(
119         func(params handle.DeleteE2tHandleParams) middleware.Responder {
120             err := nbi.DeleteE2tHandleHandlerImpl(params.E2tData)
121             if err != nil {
122                 xapp.Logger.Error("RoutingManager->E2Manager DeleteE2T Request Failed: " + err.Error())
123                 return handle.NewDeleteE2tHandleBadRequest()
124             } else {
125                 xapp.Logger.Info("RoutingManager->E2Manager DeleteE2T Request Success, E2T = %v", *params.E2tData.E2TAddress)
126                 return handle.NewDeleteE2tHandleCreated()
127             }
128         })
129     api.DebugGetDebuginfoHandler = debug.GetDebuginfoHandlerFunc(
130         func(params debug.GetDebuginfoParams) middleware.Responder {
131             response, err := nbi.DumpDebugData()
132             if err != nil {
133                 return debug.NewGetDebuginfoCreated()
134             } else {
135                 return debug.NewGetDebuginfoOK().WithPayload(&response)
136             }
137         })
138     api.HandleAddRmrRouteHandler = handle.AddRmrRouteHandlerFunc(
139         func(params handle.AddRmrRouteParams) middleware.Responder {
140             err := nbi.Adddelrmrroute(params.RoutesList, true)
141             if err != nil {
142                 return handle.NewAddRmrRouteBadRequest()
143             } else {
144                 return handle.NewAddRmrRouteCreated()
145             }
146
147         })
148     api.HandleDelRmrRouteHandler = handle.DelRmrRouteHandlerFunc(
149         func(params handle.DelRmrRouteParams) middleware.Responder {
150             err := nbi.Adddelrmrroute(params.RoutesList, false)
151             if err != nil {
152                 return handle.NewDelRmrRouteBadRequest()
153             } else {
154                 return handle.NewDelRmrRouteCreated()
155             }
156         })
157
158     // start to serve API
159     xapp.Logger.Info("Starting the HTTP Rest service")
160     if err := server.Serve(); err != nil {
161         xapp.Logger.Error(err.Error())
162     }
163 }
164