Test case for custom onboard API
[ric-plt/ricdms.git] / pkg / deploy / deployment_manager.go
index edc8f80..0bd0461 100644 (file)
@@ -24,6 +24,7 @@ import (
        "fmt"
        "io"
        "os"
+       "strings"
 
        "gerrit.o-ran-sc.org/r/ric-plt/ricdms/pkg/ricdms"
        "helm.sh/helm/v3/pkg/action"
@@ -38,16 +39,18 @@ type DeploymentManager struct {
 const (
        HELM_DRIVER        = "HELM_DRIVER"
        CHART_NAME_FORMAT  = "chart-%s-%s.tgz"
-       RELESE_NAME_FORMAT = "ricdms-%s-rel"
+       RELESE_NAME_FORMAT = "ricdms-%s-rel-%s"
 )
 
 func NewDeploymentManager() IDeploy {
-       return &DeploymentManager{}
+       return &DeploymentManager{
+               settings: cli.New(),
+       }
 }
 
-func (d *DeploymentManager) install(chartPath, appName, namesapce string) error {
+func (d *DeploymentManager) install(chartPath, appName, version, namesapce string) error {
        conf := action.Configuration{}
-       err := conf.Init(d.settings.RESTClientGetter(), "namespace", os.Getenv(HELM_DRIVER), ricdms.Logger.Debug)
+       err := conf.Init(d.settings.RESTClientGetter(), namesapce, os.Getenv(HELM_DRIVER), ricdms.Logger.Debug)
 
        if err != nil {
                ricdms.Logger.Error("not able to prepare install configuration: %v", err)
@@ -55,7 +58,7 @@ func (d *DeploymentManager) install(chartPath, appName, namesapce string) error
        }
 
        install := action.NewInstall(&conf)
-       install.ReleaseName = fmt.Sprintf(RELESE_NAME_FORMAT, appName)
+       install.ReleaseName = fmt.Sprintf(RELESE_NAME_FORMAT, appName, strings.ReplaceAll(version, ".", ""))
        install.Namespace = namesapce
 
        cp, err := install.ChartPathOptions.LocateChart(chartPath, d.settings)
@@ -105,9 +108,31 @@ func (d *DeploymentManager) Deploy(reader io.ReadCloser, appname, version, names
                return err
        }
 
-       err = d.install(fmt.Sprintf(CHART_NAME_FORMAT, appname, version), appname, namespace)
+       err = d.install(fmt.Sprintf(CHART_NAME_FORMAT, appname, version), appname, version, namespace)
        if err != nil {
                return err
        }
        return nil
 }
+
+func (d *DeploymentManager) Uninstall(appname, version, namespace string) error {
+       conf := action.Configuration{}
+
+       err := conf.Init(d.settings.RESTClientGetter(), namespace, os.Getenv(HELM_DRIVER), ricdms.Logger.Debug)
+       if err != nil {
+               ricdms.Logger.Error("Not able to prepare uninstall configuration: %v", err)
+               return err
+       }
+
+       uninstall := action.NewUninstall(&conf)
+       uninstall.Wait = true
+
+       resp, err := uninstall.Run(fmt.Sprintf(RELESE_NAME_FORMAT, appname, strings.ReplaceAll(version, ".", "")))
+       if err != nil {
+               ricdms.Logger.Error("Error while uninstalling deployment: %v", err)
+               return err
+       }
+
+       ricdms.Logger.Info("deployment uninstallation comlete : %", resp.Info)
+       return nil
+}