X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fhelm%2Fhelm.go;h=157a117f61b2605e868d5efca2862ae8489c63ae;hb=45ea51f2a77c4aa22546224b4ded0d3cb03425e6;hp=a3d7b1830ff0161dddca9424fd2f630c448b97a3;hpb=b3048135f7118568098dcbc4081b4f7f4b2c589e;p=ric-plt%2Fappmgr.git diff --git a/pkg/helm/helm.go b/pkg/helm/helm.go index a3d7b18..157a117 100755 --- a/pkg/helm/helm.go +++ b/pkg/helm/helm.go @@ -30,10 +30,10 @@ import ( "strings" "time" - "gerrit.oran-osc.org/r/ric-plt/appmgr/pkg/appmgr" - "gerrit.oran-osc.org/r/ric-plt/appmgr/pkg/cm" - "gerrit.oran-osc.org/r/ric-plt/appmgr/pkg/models" - "gerrit.oran-osc.org/r/ric-plt/appmgr/pkg/util" + "gerrit.o-ran-sc.org/r/ric-plt/appmgr/pkg/appmgr" + "gerrit.o-ran-sc.org/r/ric-plt/appmgr/pkg/cm" + "gerrit.o-ran-sc.org/r/ric-plt/appmgr/pkg/models" + "gerrit.o-ran-sc.org/r/ric-plt/appmgr/pkg/util" ) type Helm struct { @@ -85,28 +85,25 @@ func (h *Helm) Init() (out []byte, err error) { func (h *Helm) AddRepo() (out []byte, err error) { // Get helm repo user name and password from files mounted by secret object - credFile, err := ioutil.ReadFile(viper.GetString("helm.helm-username-file")) + username, err := ioutil.ReadFile(viper.GetString("helm.helm-username-file")) if err != nil { appmgr.Logger.Info("helm_repo_username ReadFile failed: %v", err.Error()) return } - username := " --username " + string(credFile) - credFile, err = ioutil.ReadFile(viper.GetString("helm.helm-password-file")) + password, err := ioutil.ReadFile(viper.GetString("helm.helm-password-file")) if err != nil { appmgr.Logger.Info("helm_repo_password ReadFile failed: %v", err.Error()) return } - pwd := " --password " + string(credFile) - rname := viper.GetString("helm.repo-name") - repo := viper.GetString("helm.repo") + repoArgs := fmt.Sprintf(" %s %s ", viper.GetString("helm.repo-name"), viper.GetString("helm.repo")) + credentials := fmt.Sprintf(" --username %s --password %s", string(username), string(password)) - return util.HelmExec(strings.Join([]string{"repo add ", rname, " ", repo, username, pwd}, "")) + return util.HelmExec(strings.Join([]string{"repo add ", repoArgs, credentials}, "")) } func (h *Helm) Install(m models.XappDescriptor) (xapp models.Xapp, err error) { - var c interface{} m.Namespace = h.cm.GetNamespace(m.Namespace) out, err := h.Run(strings.Join([]string{"repo update "}, "")) @@ -114,29 +111,10 @@ func (h *Helm) Install(m models.XappDescriptor) (xapp models.Xapp, err error) { return } - if err = h.cm.GetConfigMap(m, &c); err != nil { - out, err = h.Run(h.GetInstallArgs(m, false)) - if err != nil { - return - } - return h.ParseStatus(*m.XappName, string(out)) - } - - // ConfigMap exists, try to override - out, err = h.Run(h.GetInstallArgs(m, true)) - if err == nil { - return h.ParseStatus(*m.XappName, string(out)) - } - - c, cmErr := h.cm.PurgeConfigMap(m) out, err = h.Run(h.GetInstallArgs(m, false)) if err != nil { return } - - if cmErr == nil { - cmErr = h.cm.RestoreConfigMap(m, c) - } return h.ParseStatus(*m.XappName, string(out)) } @@ -236,15 +214,30 @@ func (h *Helm) GetAddress(out string) (ip, port string) { return } -func (h *Helm) GetEndpointInfo(name string) (ip string, port int) { +func (h *Helm) GetEndpointInfo(name string) (svc string, port int) { + port = 4560 // Default ns := h.cm.GetNamespace("") - args := fmt.Sprintf(" get endpoints -o=jsonpath='{.subsets[*].addresses[*].ip}' service-%s-%s-rmr -n %s", ns, name, ns) + args := fmt.Sprintf(" get service -n ricxapp service-%s-%s-rmr -o json", ns, name) out, err := util.KubectlExec(args) if err != nil { - return + return fmt.Sprintf("service-%s-%s-rmr.%s", ns, name, ns), 4560 } - appmgr.Logger.Info("Endpoint IP address of %s: %s", name, string(out)) - return fmt.Sprintf("service-%s-%s-rmr.%s", ns, name, ns), 4560 + appmgr.Logger.Debug("Endpoint IP address of %s: %s", name, string(out)) + + v, err := h.cm.ParseJson(string(out)) + if err != nil { + return fmt.Sprintf("service-%s-%s-rmr.%s", ns, name, ns), 4560 + } + + for _, p := range v.GetArray("spec", "ports") { + if string(p.GetStringBytes("name")) == "rmrdata" { + port = int(p.GetInt("port")) + break + } + } + appmgr.Logger.Info("service-%s-%s-rmr.%s %d", ns, name, ns, port) + + return fmt.Sprintf("service-%s-%s-rmr.%s", ns, name, ns), port } func (h *Helm) GetNames(out string) (names []string, err error) { @@ -263,7 +256,7 @@ func (h *Helm) GetNames(out string) (names []string, err error) { return names, nil } -func (h *Helm) FillInstanceData(name string, out string, xapp *models.Xapp, msgs appmgr.MessageTypes) { +func (h *Helm) FillInstanceData(name string, out string, xapp *models.Xapp, rtData appmgr.RtmData) { ip, port := h.GetEndpointInfo(name) if ip == "" { appmgr.Logger.Info("Endpoint IP address not found, using CluserIP") @@ -288,8 +281,9 @@ func (h *Helm) FillInstanceData(name string, out string, xapp *models.Xapp, msgs x.Status = strings.ToLower(x.Status) x.IP = ip x.Port = int64(port) - x.TxMessages = msgs.TxMessages - x.RxMessages = msgs.RxMessages + x.TxMessages = rtData.TxMessages + x.RxMessages = rtData.RxMessages + x.Policies = rtData.Policies xapp.Instances = append(xapp.Instances, &x) } } @@ -300,14 +294,15 @@ func (h *Helm) ParseStatus(name string, out string) (xapp models.Xapp, err error xapp.Version = h.GetVersion(name) xapp.Status = h.GetState(out) - h.FillInstanceData(name, out, &xapp, h.cm.GetMessages(name)) + h.FillInstanceData(name, out, &xapp, h.cm.GetRtmData(name)) return } func (h *Helm) parseAllStatus(names []string) (xapps models.AllDeployedXapps, err error) { xapps = models.AllDeployedXapps{} for _, name := range names { - err := h.cm.ReadSchema(name, &models.XAppConfig{}) + var desc interface{} + err := h.cm.ReadSchema(name, &desc) if err != nil { continue } @@ -332,19 +327,19 @@ func (h *Helm) AddTillerEnv() (err error) { } func (h *Helm) GetInstallArgs(x models.XappDescriptor, cmOverride bool) (args string) { - args = args + " --namespace=" + x.Namespace + args = fmt.Sprintf("%s --namespace=%s", args, x.Namespace) if x.HelmVersion != "" { - args = args + " --version=" + x.HelmVersion + args = fmt.Sprintf("%s --version=%s", args, x.HelmVersion) } if x.ReleaseName != "" { - args = args + " --name=" + x.ReleaseName + args = fmt.Sprintf("%s --name=%s", args, x.ReleaseName) } else { - args = args + " --name=" + *x.XappName + args = fmt.Sprintf("%s --name=%s", args, *x.XappName) } if cmOverride == true { - args = args + " --set ricapp.appconfig.override=" + *x.XappName + "-appconfig" + args = fmt.Sprintf("%s ---set ricapp.appconfig.override=%s-appconfig", args, *x.XappName) } if x.OverrideFile != nil {