1 //==================================================================================
2 // Copyright (c) 2022 Samsung
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://www.apache.org/licenses/LICENSE-2.0
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
16 // This source code is part of the near-RT RIC (RAN Intelligent Controller)
17 // platform project (RICP).
18 //==================================================================================
24 ch "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/charts"
25 "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/deploy"
26 ph "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/health"
27 "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/models"
28 "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/onboard"
29 "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/restapi/operations/charts"
30 dp "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/restapi/operations/deploy"
31 "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/restapi/operations/health"
32 "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/ricdms"
33 "github.com/go-openapi/runtime/middleware"
36 func NewResthook(h ph.IHealthChecker, o onboard.IOnboarder, chMgr ch.IChartMgr, depMgr deploy.IDeploy) *Resthook {
45 func (rh *Resthook) GetDMSHealth() (resp middleware.Responder) {
46 ricdms.Logger.Debug("healthchecker : %v\n", rh.HealthChecker)
47 return health.NewGetHealthCheckOK().WithPayload(rh.HealthChecker.GetStatus())
50 func (rh *Resthook) GetxAppHealth(appname, namespace string) (resp middleware.Responder) {
51 ricdms.Logger.Debug("Healthchecker: xApp health check is initiated")
52 status := rh.HealthChecker.GetxAppStatus(appname, namespace)
54 return health.NewGetHealthCheckInternalServerError()
56 return health.NewGetHealthCheckOK().WithPayload(status)
59 func (rh *Resthook) OnBoard(params *models.Descriptor) (resp middleware.Responder) {
60 ricdms.Logger.Debug("onboarder: invoked")
61 return rh.Onboarder.Onboard(params)
64 func (rh *Resthook) GetCharts() (resp middleware.Responder) {
65 ricdms.Logger.Debug("getcharts: invoked")
66 chartList, err := rh.ChartMgr.GetCharts()
69 return charts.NewGetChartsListInternalServerError()
71 return charts.NewGetChartsListOK().WithPayload(chartList)
74 func (rh *Resthook) DownloadChart(chartname, version string) (resp middleware.Responder) {
75 ricdms.Logger.Debug("DownloadCharts: invoked")
76 reader, err := rh.ChartMgr.DownloadChart(chartname, version)
79 ricdms.Logger.Error("Error : %v", err)
80 return charts.NewDownloadHelmChartInternalServerError()
83 return charts.NewDownloadHelmChartOK().WithPayload(reader)
86 func (rh *Resthook) GetChartsByName(name string) middleware.Responder {
87 ricdms.Logger.Debug("GetChartByName: invoked")
88 res, err := rh.ChartMgr.GetChartsByName(name)
91 ricdms.Logger.Error("error: %v", err)
92 return charts.NewGetChartInternalServerError()
95 response := make([]interface{}, 0)
96 for _, item := range res {
97 response = append(response, item)
100 return charts.NewGetChartOK().WithPayload(response)
103 func (rh *Resthook) GetChartByNameAndVersion(name, version string) middleware.Responder {
104 ricdms.Logger.Debug("GetChartByNameAndVersion is invoked")
105 resp, err := rh.ChartMgr.GetChartsByNameAndVersion(name, version)
108 return charts.NewGetChartsFetcherInternalServerError()
111 return charts.NewGetChartsFetcherOK().WithPayload(resp)
114 func (rh *Resthook) DownloadAndInstallChart(appname, version, namespace string) middleware.Responder {
115 ricdms.Logger.Debug("DownloadAndInstall Chart is invoked")
116 reader, err := rh.ChartMgr.DownloadChart(appname, version)
119 ricdms.Logger.Error("error in downloading the chart : %v", err)
120 return dp.NewPostDeployInternalServerError()
123 err = rh.DeployMgr.Deploy(reader, appname, version, namespace)
125 return dp.NewPostDeployInternalServerError()
127 return dp.NewPostDeployCreated()
130 func (rh *Resthook) UninstallChart(appname, version, namespace string) middleware.Responder {
131 ricdms.Logger.Debug("Uninstall chart is invoked")
132 err := rh.DeployMgr.Uninstall(appname, version, namespace)
134 ricdms.Logger.Error("Uninstall failed: %v", err)
135 return dp.NewDeleteDeployInternalServerError()
138 return dp.NewDeleteDeployCreated()