From e71a5a56e10d27e263fb380ea43a4d89f18e2f03 Mon Sep 17 00:00:00 2001 From: Mohamed Abukar Date: Thu, 5 Dec 2019 08:26:30 +0200 Subject: [PATCH] Add support for RT policies Change-Id: I8845d7d296634d3b06465385fd35c4ffabac9ee0 Signed-off-by: Mohamed Abukar --- api/appmgr_rest_api.yaml | 4 ++++ container-tag.yaml | 2 +- pkg/appmgr/types.go | 5 +++-- pkg/cm/cm.go | 10 ++++++++-- pkg/cm/cm_test.go | 14 ++++++++------ pkg/helm/helm.go | 9 +++++---- pkg/helm/helm_test.go | 2 +- 7 files changed, 30 insertions(+), 16 deletions(-) mode change 100644 => 100755 api/appmgr_rest_api.yaml diff --git a/api/appmgr_rest_api.yaml b/api/appmgr_rest_api.yaml old mode 100644 new mode 100755 index 04f4f0a..41947b2 --- a/api/appmgr_rest_api.yaml +++ b/api/appmgr_rest_api.yaml @@ -491,6 +491,10 @@ definitions: type: array items: type: string + policies: + type: array + items: + type: integer XappDescriptor: type: object required: diff --git a/container-tag.yaml b/container-tag.yaml index 98ef6c2..efb291d 100755 --- 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.3.0' +tag: '0.3.1' diff --git a/pkg/appmgr/types.go b/pkg/appmgr/types.go index afdb0b4..9b49b25 100755 --- a/pkg/appmgr/types.go +++ b/pkg/appmgr/types.go @@ -46,7 +46,7 @@ type ConfigMapper interface { RestoreConfigMap(m models.XappDescriptor, cm interface{}) (err error) ReadConfigMap(name string, ns string, c *interface{}) (err error) ApplyConfigMap(r models.XAppConfig, action string) (err error) - GetMessages(name string) (msgs MessageTypes) + GetRtmData(name string) (msgs RtmData) GetNamespace(ns string) string GetNamesFromHelmRepo() (names []string) } @@ -69,9 +69,10 @@ type Helm struct { cm ConfigMapper } -type MessageTypes struct { +type RtmData struct { TxMessages []string `json:"txMessages"` RxMessages []string `json:"rxMessages"` + Policies []int64 `json:"Policies"` } type EventType string diff --git a/pkg/cm/cm.go b/pkg/cm/cm.go index af5372d..a073c0a 100755 --- a/pkg/cm/cm.go +++ b/pkg/cm/cm.go @@ -31,6 +31,7 @@ import ( "path" "regexp" "strings" + "strconv" "time" "gerrit.oran-osc.org/r/ric-plt/appmgr/pkg/appmgr" @@ -262,8 +263,8 @@ func (cm *CM) FetchChart(name string) (err error) { return } -func (cm *CM) GetMessages(name string) (msgs appmgr.MessageTypes) { - appmgr.Logger.Info("Fetching tx/rx messages for: %s", name) +func (cm *CM) GetRtmData(name string) (msgs appmgr.RtmData) { + appmgr.Logger.Info("Fetching RT data for xApp=%s", name) ns := cm.GetNamespace("") args := fmt.Sprintf("get configmap -o jsonpath='{.data.config-file\\.json}' -n %s %s", ns, cm.GetConfigMapName(name, ns)) @@ -285,6 +286,11 @@ func (cm *CM) GetMessages(name string) (msgs appmgr.MessageTypes) { for _, m := range v.GetArray("rmr", "rxMessages") { msgs.RxMessages = append(msgs.RxMessages, strings.Trim(m.String(), `"`)) } + for _, m := range v.GetArray("rmr", "policies") { + if val, err := strconv.Atoi(strings.Trim(m.String(), `"`)); err == nil { + msgs.Policies = append(msgs.Policies, int64(val)) + } + } return } diff --git a/pkg/cm/cm_test.go b/pkg/cm/cm_test.go index be600bb..21d1d61 100755 --- a/pkg/cm/cm_test.go +++ b/pkg/cm/cm_test.go @@ -52,7 +52,8 @@ var kubectlConfigmapOutput = ` "maxSize": 2072, "numWorkers": 1, "txMessages": ["RIC_X2_LOAD_INFORMATION"], - "rxMessages": ["RIC_X2_LOAD_INFORMATION"] + "rxMessages": ["RIC_X2_LOAD_INFORMATION"], + "policies": [11, 22, 33] }, "db": { "namespace": "ricxapp", @@ -114,7 +115,7 @@ func (cm *MockedConfigMapper) FetchChart(name string) (err error) { return } -func (cm *MockedConfigMapper) GetMessages(name string) (msgs appmgr.MessageTypes) { +func (cm *MockedConfigMapper) GetRtmData(name string) (msgs appmgr.RtmData) { return } @@ -135,19 +136,20 @@ func TestMain(m *testing.M) { os.Exit(code) } -func TestGetMessages(t *testing.T) { - expectedMsgs := appmgr.MessageTypes{ +func TestGetRtmData(t *testing.T) { + expectedMsgs := appmgr.RtmData{ TxMessages: []string{"RIC_X2_LOAD_INFORMATION"}, RxMessages: []string{"RIC_X2_LOAD_INFORMATION"}, + Policies: []int64{11, 22, 33}, } util.KubectlExec = func(args string) (out []byte, err error) { return []byte(kubectlConfigmapOutput), nil } - result := NewCM().GetMessages("dummy-xapp") + result := NewCM().GetRtmData("dummy-xapp") if !reflect.DeepEqual(result, expectedMsgs) { - t.Errorf("TestGetMessages failed: expected: %v, got: %v", expectedMsgs, result) + t.Errorf("TestGetRtmData failed: expected: %v, got: %v", expectedMsgs, result) } } diff --git a/pkg/helm/helm.go b/pkg/helm/helm.go index a3d7b18..4f847a2 100755 --- a/pkg/helm/helm.go +++ b/pkg/helm/helm.go @@ -263,7 +263,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 +288,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,7 +301,7 @@ 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 } diff --git a/pkg/helm/helm_test.go b/pkg/helm/helm_test.go index fb72358..9bc1226 100755 --- a/pkg/helm/helm_test.go +++ b/pkg/helm/helm_test.go @@ -165,7 +165,7 @@ func generateXapp(name, status, ver, iname, istatus, ip, port string) (x models. x.Status = status x.Version = ver p, _ := strconv.Atoi(port) - var msgs appmgr.MessageTypes + var msgs appmgr.RtmData instance := &models.XappInstance{ Name: &iname, -- 2.16.6