Build related cleanup. Entrypoint to read config from correct place.
[ric-plt/appmgr.git] / cmd / appmgr / desc.go
index 2f55460..8cc39a5 100755 (executable)
@@ -24,6 +24,7 @@ import (
        "errors"
        "fmt"
        "github.com/spf13/viper"
+       "github.com/valyala/fastjson"
        "github.com/xeipuuv/gojsonschema"
        "io/ioutil"
        "log"
@@ -64,13 +65,14 @@ type CMError struct {
 }
 
 func (cm *ConfigMap) UploadConfig() (cfg []XAppConfig) {
+       ns := cm.GetNamespace("")
        for _, name := range cm.GetNamesFromHelmRepo() {
                if name == "appmgr" {
                        continue
                }
 
                c := XAppConfig{
-                       Metadata: ConfigMetadata{Name: name, Namespace: "ricxapp", ConfigName: name + "-appconfig"},
+                       Metadata: ConfigMetadata{Name: name, Namespace: ns, ConfigName: cm.GetConfigMapName(name, ns)},
                }
 
                err := cm.ReadSchema(name, &c)
@@ -78,7 +80,7 @@ func (cm *ConfigMap) UploadConfig() (cfg []XAppConfig) {
                        continue
                }
 
-               err = cm.ReadConfigMap(c.Metadata.ConfigName, "ricxapp", &c.Configuration)
+               err = cm.ReadConfigMap(c.Metadata.ConfigName, ns, &c.Configuration)
                if err != nil {
                        log.Println("No active configMap found, using default!")
                }
@@ -134,7 +136,7 @@ func (cm *ConfigMap) ApplyConfigMap(r XAppConfig, action string) (err error) {
                Data:       r.Configuration,
        }
 
-       cmJson, err := json.Marshal(c)
+       cmJson, err := json.Marshal(c.Data)
        if err != nil {
                log.Println("Config marshalling failed: ", err)
                return
@@ -158,6 +160,13 @@ func (cm *ConfigMap) ApplyConfigMap(r XAppConfig, action string) (err error) {
        return
 }
 
+func (cm *ConfigMap) GetConfigMap(m XappDeploy, c *interface{}) (err error) {
+       if m.ConfigName == "" {
+               m.ConfigName = cm.GetConfigMapName(m.Name, m.Namespace)
+       }
+       return cm.ReadConfigMap(m.ConfigName, m.Namespace, c)
+}
+
 func (cm *ConfigMap) CreateConfigMap(r XAppConfig) (errList []CMError, err error) {
        if errList, err = cm.Validate(r); err != nil {
                return
@@ -187,7 +196,7 @@ func (cm *ConfigMap) DeleteConfigMap(r XAppConfig) (c interface{}, err error) {
 
 func (cm *ConfigMap) PurgeConfigMap(m XappDeploy) (c interface{}, err error) {
        if m.ConfigName == "" {
-               m.ConfigName = m.Name + "-appconfig"
+               m.ConfigName = cm.GetConfigMapName(m.Name, m.Namespace)
        }
        md := ConfigMetadata{Name: m.Name, Namespace: m.Namespace, ConfigName: m.ConfigName}
 
@@ -196,7 +205,7 @@ func (cm *ConfigMap) PurgeConfigMap(m XappDeploy) (c interface{}, err error) {
 
 func (cm *ConfigMap) RestoreConfigMap(m XappDeploy, c interface{}) (err error) {
        if m.ConfigName == "" {
-               m.ConfigName = m.Name + "-appconfig"
+               m.ConfigName = cm.GetConfigMapName(m.Name, m.Namespace)
        }
        md := ConfigMetadata{Name: m.Name, Namespace: m.Namespace, ConfigName: m.ConfigName}
        time.Sleep(time.Duration(10 * time.Second))
@@ -282,5 +291,43 @@ func (cm *ConfigMap) FetchChart(name string) (err error) {
 
 func (cm *ConfigMap) GetMessages(name string) (msgs MessageTypes) {
        log.Println("Fetching tx/rx messages for: ", name)
+
+       ns := cm.GetNamespace("")
+       args := fmt.Sprintf("get configmap -o jsonpath='{.data.config-file\\.json}' -n %s %s", ns, cm.GetConfigMapName(name, ns))
+       out, err := KubectlExec(args)
+       if err != nil {
+               return
+       }
+
+       var p fastjson.Parser
+       v, err := p.Parse(string(out))
+       if err != nil {
+               log.Printf("fastjson.Parser for '%s' failed: %v", name, err)
+               return
+       }
+
+       for _, m := range v.GetArray("rmr", "txMessages") {
+               msgs.TxMessages = append(msgs.TxMessages, strings.Trim(m.String(), `"`))
+       }
+       for _, m := range v.GetArray("rmr", "rxMessages") {
+               msgs.RxMessages = append(msgs.RxMessages, strings.Trim(m.String(), `"`))
+       }
+
        return
 }
+
+func (cm *ConfigMap) GetConfigMapName(xappName, namespace string) string {
+       return " configmap-" + namespace + "-" + xappName + "-appconfig"
+}
+
+func (cm *ConfigMap) GetNamespace(ns string) string {
+       if ns != "" {
+               return ns
+       }
+
+       ns = viper.GetString("xapp.namespace")
+       if ns == "" {
+               ns = "ricxapp"
+       }
+       return ns
+}