X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=cmd%2Fappmgr%2Fdesc.go;h=8cc39a59f80c478bd5a471bcc8a6e9ec5c460cd5;hb=refs%2Ftags%2Fv0.1.9;hp=2f55460590e38d2de024804835775e3067d77c60;hpb=2d70448ee0d4ea44be1bf81fab9056abb01c28f0;p=ric-plt%2Fappmgr.git diff --git a/cmd/appmgr/desc.go b/cmd/appmgr/desc.go index 2f55460..8cc39a5 100755 --- a/cmd/appmgr/desc.go +++ b/cmd/appmgr/desc.go @@ -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 +}