X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fresthooks%2Fresthooks.go;h=e0d7df2073e3302f1a695c8f28992f9f7fcb5490;hb=d25ee8c6c3027e65def77176aa08f06ba5500fe9;hp=cc144d4fcef6ae212e528c92e591b3a3404b403d;hpb=6e8d970e6ec582bd4473c3fbb6772906658608ca;p=ric-plt%2Fricdms.git diff --git a/pkg/resthooks/resthooks.go b/pkg/resthooks/resthooks.go index cc144d4..e0d7df2 100644 --- a/pkg/resthooks/resthooks.go +++ b/pkg/resthooks/resthooks.go @@ -22,20 +22,23 @@ 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, o onboard.IOnboarder, chMgr ch.IChartMgr) *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, } } @@ -44,6 +47,15 @@ func (rh *Resthook) GetDMSHealth() (resp middleware.Responder) { 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) @@ -58,3 +70,70 @@ func (rh *Resthook) GetCharts() (resp middleware.Responder) { } 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() +}