Add NodeId as configuration in ransliceassurance SMO Version 95/9395/3
authoraravind.est <aravindhan.a@est.tech>
Tue, 25 Oct 2022 17:05:38 +0000 (18:05 +0100)
committeraravind.est <aravindhan.a@est.tech>
Wed, 26 Oct 2022 13:12:32 +0000 (14:12 +0100)
Issue-ID: NONRTRIC-807
Change-Id: Ib0f0b0c68e149e3dbf74c77c212eae40dd7c306d
Signed-off-by: aravind.est <aravindhan.a@est.tech>
smoversion/internal/config/config.go
smoversion/internal/config/config_test.go
smoversion/internal/sliceassurance/app.go
smoversion/main.go

index f1eb26f..85b10ec 100644 (file)
@@ -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 {
index 1005946..22a56aa 100644 (file)
@@ -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)
index c4a4d65..91e9303 100644 (file)
@@ -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{}) {
index 337e4e0..cb755f1 100644 (file)
@@ -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
 }