From 45df1f32f8b82c380c5cd25fd6753a6581180d45 Mon Sep 17 00:00:00 2001 From: Mohamed Abukar Date: Mon, 23 Sep 2019 17:34:31 +0300 Subject: [PATCH] Return service names of xApps instead of IP Change-Id: Ic28fe710bb15379e7ce2dd0d571c12bc543c9745 Signed-off-by: Mohamed Abukar --- cmd/appmgr/api.go | 8 ++++++++ cmd/appmgr/desc.go | 14 +++++++++----- cmd/appmgr/helm.go | 7 +++++-- cmd/appmgr/main.go | 2 +- cmd/appmgr/subscriptions.go | 17 +++++++++++++---- cmd/appmgr/types.go | 2 +- container-tag.yaml | 2 +- 7 files changed, 38 insertions(+), 14 deletions(-) diff --git a/cmd/appmgr/api.go b/cmd/appmgr/api.go index db54eb2..e805a51 100755 --- a/cmd/appmgr/api.go +++ b/cmd/appmgr/api.go @@ -26,6 +26,7 @@ import ( "github.com/spf13/viper" "log" "net/http" + "time" ) // API functions @@ -181,6 +182,13 @@ func (m *XappManager) deployXapp(w http.ResponseWriter, r *http.Request) { return } + for i := 0; i < 3; i++ { + if xapp, err = m.helm.Status(xapp.Name); xapp.Instances != nil { + break; + } + time.Sleep(time.Duration(5) * time.Second) + } + respondWithJSON(w, http.StatusCreated, xapp) m.sd.Publish(xapp, EventType("created")) diff --git a/cmd/appmgr/desc.go b/cmd/appmgr/desc.go index 7f33444..d7c2d5e 100755 --- a/cmd/appmgr/desc.go +++ b/cmd/appmgr/desc.go @@ -72,7 +72,7 @@ func (cm *ConfigMap) UploadConfig() (cfg []XAppConfig) { } c := XAppConfig{ - Metadata: ConfigMetadata{Name: name, Namespace: ns, ConfigName: name + "-appconfig"}, + Metadata: ConfigMetadata{Name: name, Namespace: ns, ConfigName: cm.GetConfigMapName(name, ns)}, } err := cm.ReadSchema(name, &c) @@ -162,7 +162,7 @@ func (cm *ConfigMap) ApplyConfigMap(r XAppConfig, action string) (err error) { func (cm *ConfigMap) GetConfigMap(m XappDeploy, c *interface{}) (err error) { if m.ConfigName == "" { - m.ConfigName = m.Name + "-appconfig" + m.ConfigName = cm.GetConfigMapName(m.Name, m.Namespace) } return cm.ReadConfigMap(m.ConfigName, m.Namespace, c) } @@ -196,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} @@ -205,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)) @@ -293,7 +293,7 @@ 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-appconfig", ns, name) + 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 @@ -316,6 +316,10 @@ func (cm *ConfigMap) GetMessages(name string) (msgs MessageTypes) { 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 diff --git a/cmd/appmgr/helm.go b/cmd/appmgr/helm.go index 874ae2b..8a8154a 100755 --- a/cmd/appmgr/helm.go +++ b/cmd/appmgr/helm.go @@ -274,13 +274,16 @@ func (h *Helm) GetAddress(out string) (ip, port string) { } func (h *Helm) GetEndpointInfo(name string) (ip string, port int) { - args := fmt.Sprintf(" get endpoints -o=jsonpath='{.subsets[*].addresses[*].ip}' %s -n %s", name, h.cm.GetNamespace("")) + ns := h.cm.GetNamespace("") + args := fmt.Sprintf(" get endpoints -o=jsonpath='{.subsets[*].addresses[*].ip}' service-%s-%s-rmr -n %s", ns, name, ns) out, err := KubectlExec(args) if err != nil { return } + Logger.Info("Endpoint IP address of %s: %s", name, string(out)) - return string(out), 4560 + // "service---rmr." + return "service-" + ns + "-" + name + "-rmr." + ns, 4560 } func (h *Helm) GetNames(out string) (names []string, err error) { diff --git a/cmd/appmgr/main.go b/cmd/appmgr/main.go index 954f957..8788405 100755 --- a/cmd/appmgr/main.go +++ b/cmd/appmgr/main.go @@ -23,7 +23,7 @@ var Logger *Log func main() { Logger = NewLogger("xapp-manager") - + Logger.SetMdc("appmgr", "0.1.9") loadConfig() m := XappManager{} diff --git a/cmd/appmgr/subscriptions.go b/cmd/appmgr/subscriptions.go index 40735a9..53bc212 100755 --- a/cmd/appmgr/subscriptions.go +++ b/cmd/appmgr/subscriptions.go @@ -36,6 +36,15 @@ func (sd *SubscriptionDispatcher) Initialize() { } func (sd *SubscriptionDispatcher) Add(sr SubscriptionReq) (resp SubscriptionResp) { + // Skip duplicates + for v := range sd.subscriptions.IterBuffered() { + r := v.Val.(Subscription).req + if r.TargetUrl == sr.TargetUrl && r.EventType == sr.EventType { + Logger.Info("Similar subscription already exists!") + return + } + } + key := ksuid.New().String() resp = SubscriptionResp{key, 0, sr.EventType} sr.Id = key @@ -108,10 +117,10 @@ func (sd *SubscriptionDispatcher) notifyClients(xapps []Xapp, et EventType) { func (sd *SubscriptionDispatcher) notify(xapps []Xapp, et EventType, s Subscription, seq int) error { xappData, err := json.Marshal(xapps) - if err != nil { - Logger.Info("json.Marshal failed: %v", err) - return err - } + if err != nil { + Logger.Info("json.Marshal failed: %v", err) + return err + } notif := SubscriptionNotif{Id: s.req.Id, Version: seq, EventType: string(et), XApps: string(xappData)} jsonData, err := json.Marshal(notif) diff --git a/cmd/appmgr/types.go b/cmd/appmgr/types.go index 34e3b74..1c9556d 100755 --- a/cmd/appmgr/types.go +++ b/cmd/appmgr/types.go @@ -123,7 +123,7 @@ type SubscriptionNotif struct { Id string `json:"id"` Version int `json:"version"` EventType string `json:"eventType"` - XApps string `json:"xApps"` + XApps string `json:"xApps"` } type Subscription struct { diff --git a/container-tag.yaml b/container-tag.yaml index 9d2da80..fa695b0 100644 --- a/container-tag.yaml +++ b/container-tag.yaml @@ -1,4 +1,4 @@ # The Jenkins job uses this string for the tag in the image name # for example nexus3.o-ran-sc.org:10004/my-image-name:my-tag --- -tag: '0.1.6' +tag: '0.1.9' -- 2.16.6