From b0650697b9ab538808a5062a0cea691d495aa696 Mon Sep 17 00:00:00 2001 From: "aravind.est" Date: Tue, 25 Oct 2022 18:05:38 +0100 Subject: [PATCH] Add NodeId as configuration in ransliceassurance SMO Version Issue-ID: NONRTRIC-807 Change-Id: Ib0f0b0c68e149e3dbf74c77c212eae40dd7c306d Signed-off-by: aravind.est --- smoversion/internal/config/config.go | 4 +++- smoversion/internal/config/config_test.go | 4 ++++ smoversion/internal/sliceassurance/app.go | 15 ++++++++------- smoversion/main.go | 2 ++ 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/smoversion/internal/config/config.go b/smoversion/internal/config/config.go index f1eb26f..85b10ec 100644 --- a/smoversion/internal/config/config.go +++ b/smoversion/internal/config/config.go @@ -36,6 +36,7 @@ type Config struct { SDNPassword string Polltime int LogLevel log.Level + NodeId string } func New() *Config { @@ -47,11 +48,12 @@ func New() *Config { SDNPassword: getEnv("SDNR_PASSWORD", "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"), Polltime: getEnvAsInt("Polltime", 30), LogLevel: getLogLevel(), + NodeId: getEnv("NODE_ID", ""), } } func (c Config) String() string { - return fmt.Sprintf("[MRHost: %v, MRPort: %v, SDNRAddress: %v, SDNRUser: %v, SDNRPassword: %v, PollTime: %v, LogLevel: %v]", c.MRHost, c.MRPort, c.SDNRAddress, c.SDNRUser, c.SDNPassword, c.Polltime, c.LogLevel) + return fmt.Sprintf("[MRHost: %v, MRPort: %v, SDNRAddress: %v, SDNRUser: %v, SDNRPassword: %v, PollTime: %v, LogLevel: %v, NodeId: %v]", c.MRHost, c.MRPort, c.SDNRAddress, c.SDNRUser, c.SDNPassword, c.Polltime, c.LogLevel, c.NodeId) } func getEnv(key string, defaultVal string) string { diff --git a/smoversion/internal/config/config_test.go b/smoversion/internal/config/config_test.go index 1005946..22a56aa 100644 --- a/smoversion/internal/config/config_test.go +++ b/smoversion/internal/config/config_test.go @@ -38,6 +38,7 @@ func TestNewEnvVarsSetConfigContainSetValues(t *testing.T) { os.Setenv("SDNR_PASSWORD", "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U") os.Setenv("Polltime", "30") os.Setenv("LOG_LEVEL", "Debug") + os.Setenv("NODE_ID", "o-du-1122") t.Cleanup(func() { os.Clearenv() }) @@ -49,6 +50,7 @@ func TestNewEnvVarsSetConfigContainSetValues(t *testing.T) { SDNPassword: "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U", Polltime: 30, LogLevel: log.DebugLevel, + NodeId: "o-du-1122", } got := New() @@ -73,6 +75,7 @@ func TestNewFaultyIntValueSetConfigContainDefaultValueAndWarnInLog(t *testing.T) SDNPassword: "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U", Polltime: 30, LogLevel: log.InfoLevel, + NodeId: "", } got := New() @@ -100,6 +103,7 @@ func TestNewEnvFaultyLogLevelConfigContainDefaultValues(t *testing.T) { SDNPassword: "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U", Polltime: 30, LogLevel: log.InfoLevel, + NodeId: "", } got := New() assertions.Equal(&wantConfig, got) diff --git a/smoversion/internal/sliceassurance/app.go b/smoversion/internal/sliceassurance/app.go index c4a4d65..91e9303 100644 --- a/smoversion/internal/sliceassurance/app.go +++ b/smoversion/internal/sliceassurance/app.go @@ -38,7 +38,6 @@ const ( THRESHOLD_TPUT = 7000 DEFAULT_DEDICATED_RATIO = 15 NEW_DEDICATED_RATIO = 25 - NODE_ID = "O-DU-1122" ) type App struct { @@ -50,12 +49,14 @@ var dmaapMRUrl string var sDNRUrl string var sDNRUsername string var sDNRPassword string +var nodeId string func (a *App) Initialize(config *config.Config) { dmaapMRUrl = config.MRHost + ":" + config.MRPort sDNRUrl = config.SDNRAddress sDNRUsername = config.SDNRUser sDNRPassword = config.SDNPassword + nodeId = config.NodeId a.client = restclient.New(&http.Client{}, false) a.metricsPolicies = structures.NewSliceAssuranceMeas() @@ -103,7 +104,7 @@ func (a *App) getRRMInformation(duid string) { var duRRMPolicyRatio messages.ORanDuRestConf log.Infof("Get RRM Information from SDNR url: %v", sDNRUrl) - if error := a.client.Get(getUrlForDistributedUnitFunctions(sDNRUrl, duid), &duRRMPolicyRatio, sDNRUsername, sDNRPassword); error == nil { + if error := a.client.Get(getUrlForDistributedUnitFunctions(sDNRUrl, duid, nodeId), &duRRMPolicyRatio, sDNRUsername, sDNRPassword); error == nil { prettyPrint(duRRMPolicyRatio.DistributedUnitFunction) } else { log.Warn("Send of Get RRM Information failed! ", error) @@ -123,7 +124,7 @@ func (a *App) updateDedicatedRatio() { //TODO What happened if dedicated ratio is already higher that default and threshold is exceed? if check && policy.PolicyDedicatedRatio <= DEFAULT_DEDICATED_RATIO { log.Infof("Send Request to update DedicatedRatio for DU id: %v Policy id: %v", metric.DUId, policy.PolicyRatioId) - path := getUrlUpdatePolicyDedicatedRatio(sDNRUrl, metric.DUId, policy.PolicyRatioId) + path := getUrlUpdatePolicyDedicatedRatio(sDNRUrl, metric.DUId, policy.PolicyRatioId, nodeId) updatePolicyMessage := policy.GetUpdateDedicatedRatioMessage(metric.SliceDiff, metric.SliceServiceType, NEW_DEDICATED_RATIO) prettyPrint(updatePolicyMessage) if error := a.client.Put(path, updatePolicyMessage, nil, sDNRUsername, sDNRPassword); error == nil { @@ -135,12 +136,12 @@ func (a *App) updateDedicatedRatio() { } } -func getUrlForDistributedUnitFunctions(host string, duid string) string { - return host + "/rests/data/network-topology:network-topology/topology=topology-netconf/node=" + NODE_ID + "/yang-ext:mount/o-ran-sc-du-hello-world:network-function/distributed-unit-functions=" + duid +func getUrlForDistributedUnitFunctions(host string, duid string, nodeid string) string { + return host + "/rests/data/network-topology:network-topology/topology=topology-netconf/node=" + nodeid + "/yang-ext:mount/o-ran-sc-du-hello-world:network-function/distributed-unit-functions=" + duid } -func getUrlUpdatePolicyDedicatedRatio(host string, duid string, policyid string) string { - return host + "/rests/data/network-topology:network-topology/topology=topology-netconf/node=" + NODE_ID + "/yang-ext:mount/o-ran-sc-du-hello-world:network-function/distributed-unit-functions=" + duid + "/radio-resource-management-policy-ratio=" + policyid +func getUrlUpdatePolicyDedicatedRatio(host string, duid string, policyid string, nodeid string) string { + return host + "/rests/data/network-topology:network-topology/topology=topology-netconf/node=" + nodeid + "/yang-ext:mount/o-ran-sc-du-hello-world:network-function/distributed-unit-functions=" + duid + "/radio-resource-management-policy-ratio=" + policyid } func prettyPrint(jsonStruct interface{}) { diff --git a/smoversion/main.go b/smoversion/main.go index 337e4e0..cb755f1 100644 --- a/smoversion/main.go +++ b/smoversion/main.go @@ -57,6 +57,8 @@ func main() { func validateConfiguration(configuration *config.Config) error { if configuration.MRHost == "" || configuration.MRPort == "" { return fmt.Errorf("message router host and port must be provided") + } else if configuration.NodeId == "" { + return fmt.Errorf("NodeId must be provided") } return nil } -- 2.16.6