"errors"
"fmt"
"github.com/spf13/viper"
+ "github.com/valyala/fastjson"
"github.com/xeipuuv/gojsonschema"
"io/ioutil"
"log"
}
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)
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!")
}
Data: r.Configuration,
}
- cmJson, err := json.Marshal(c)
+ cmJson, err := json.Marshal(c.Data)
if err != nil {
log.Println("Config marshalling failed: ", err)
return
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
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}
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))
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
+}