package resthooks
import (
+ ch "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/charts"
+ "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/deploy"
ph "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/health"
+ "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/models"
+ "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/onboard"
+ "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/restapi/operations/charts"
+ dp "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/restapi/operations/deploy"
"gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/restapi/operations/health"
"gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/ricdms"
"github.com/go-openapi/runtime/middleware"
)
-func NewResthook(h ph.IHealthChecker) *Resthook {
+func NewResthook(h ph.IHealthChecker, o onboard.IOnboarder, chMgr ch.IChartMgr, depMgr deploy.IDeploy) *Resthook {
return &Resthook{
HealthChecker: h,
+ Onboarder: o,
+ ChartMgr: chMgr,
+ DeployMgr: depMgr,
}
}
ricdms.Logger.Debug("healthchecker : %v\n", rh.HealthChecker)
return health.NewGetHealthCheckOK().WithPayload(rh.HealthChecker.GetStatus())
}
+
+func (rh *Resthook) GetxAppHealth(appname, namespace string) (resp middleware.Responder) {
+ ricdms.Logger.Debug("Healthchecker: xApp health check is initiated")
+ status := rh.HealthChecker.GetxAppStatus(appname, namespace)
+ if status == nil {
+ return health.NewGetHealthCheckInternalServerError()
+ }
+ return health.NewGetHealthCheckOK().WithPayload(status)
+}
+
+func (rh *Resthook) OnBoard(params *models.Descriptor) (resp middleware.Responder) {
+ ricdms.Logger.Debug("onboarder: invoked")
+ return rh.Onboarder.Onboard(params)
+}
+
+func (rh *Resthook) GetCharts() (resp middleware.Responder) {
+ ricdms.Logger.Debug("getcharts: invoked")
+ chartList, err := rh.ChartMgr.GetCharts()
+
+ if err != nil {
+ return charts.NewGetChartsListInternalServerError()
+ }
+ return charts.NewGetChartsListOK().WithPayload(chartList)
+}
+
+func (rh *Resthook) DownloadChart(chartname, version string) (resp middleware.Responder) {
+ ricdms.Logger.Debug("DownloadCharts: invoked")
+ reader, err := rh.ChartMgr.DownloadChart(chartname, version)
+
+ if err != nil {
+ ricdms.Logger.Error("Error : %v", err)
+ return charts.NewDownloadHelmChartInternalServerError()
+ }
+
+ return charts.NewDownloadHelmChartOK().WithPayload(reader)
+}
+
+func (rh *Resthook) GetChartsByName(name string) middleware.Responder {
+ ricdms.Logger.Debug("GetChartByName: invoked")
+ res, err := rh.ChartMgr.GetChartsByName(name)
+
+ if err != nil {
+ ricdms.Logger.Error("error: %v", err)
+ return charts.NewGetChartInternalServerError()
+ }
+
+ response := make([]interface{}, 0)
+ for _, item := range res {
+ response = append(response, item)
+ }
+
+ return charts.NewGetChartOK().WithPayload(response)
+}
+
+func (rh *Resthook) GetChartByNameAndVersion(name, version string) middleware.Responder {
+ ricdms.Logger.Debug("GetChartByNameAndVersion is invoked")
+ resp, err := rh.ChartMgr.GetChartsByNameAndVersion(name, version)
+
+ if err != nil {
+ return charts.NewGetChartsFetcherInternalServerError()
+ }
+
+ return charts.NewGetChartsFetcherOK().WithPayload(resp)
+}
+
+func (rh *Resthook) DownloadAndInstallChart(appname, version, namespace string) middleware.Responder {
+ ricdms.Logger.Debug("DownloadAndInstall Chart is invoked")
+ reader, err := rh.ChartMgr.DownloadChart(appname, version)
+
+ if err != nil {
+ ricdms.Logger.Error("error in downloading the chart : %v", err)
+ return dp.NewPostDeployInternalServerError()
+ }
+
+ err = rh.DeployMgr.Deploy(reader, appname, version, namespace)
+ if err != nil {
+ return dp.NewPostDeployInternalServerError()
+ }
+ return dp.NewPostDeployCreated()
+}
+
+func (rh *Resthook) UninstallChart(appname, version, namespace string) middleware.Responder {
+ ricdms.Logger.Debug("Uninstall chart is invoked")
+ err := rh.DeployMgr.Uninstall(appname, version, namespace)
+ if err != nil {
+ ricdms.Logger.Error("Uninstall failed: %v", err)
+ return dp.NewDeleteDeployInternalServerError()
+ }
+
+ return dp.NewDeleteDeployCreated()
+}