NST selection changes- filenotfounderror 79/106779/1
authorSithara Nambiar <sitharav.aredath@huawei.com>
Wed, 29 Apr 2020 05:41:46 +0000 (11:11 +0530)
committerSithara Nambiar <sitharav.aredath@huawei.com>
Wed, 29 Apr 2020 05:41:46 +0000 (11:11 +0530)
Issue-ID: OPTFRA-675

Signed-off-by: Sithara Nambiar <sitharav.aredath@huawei.com>
Change-Id: I2b5eb3017fc3a08921eb3e47013a65b90724806c

apps/nst/optimizers/conf/configIinputs.json
apps/nst/optimizers/nst_select_processor.py

index 59fd5ed..d4140f9 100644 (file)
@@ -1,11 +1,31 @@
 {
        "NST": [{
                        "NST1 ": {
-                               "name": "NST_1",
-                               "id": "NST_1_id",
-                               "latency": 5,
+                               "name": "EmbbNst",
+                               "id": "EmbbNst_1",
+                               "latency": 20,
                                "uplink": 5,
-                               "downlink": 8
+                               "downlink": 8,
+                               "reliability": 95,
+                               "areaTrafficCapDL": 10,
+                               "areaTrafficCapUL": 100,
+                               "maxNumberofUEs": 10000,
+                               "areas": " area1|area2",
+                               "expDataRateDL": 10,
+                               "expDataRateUL": 1000,
+                               "uEMobilityLevel": "stationary",
+                               "resourceSharingLevel": "shared",
+                               "skip_post_instantiation_configuration": "true",
+                               "controller_actor": "SO-REF-DATA",
+                               "sNSSAI": "01-3226E7D1",
+                               "plmnIdList": "39-00",
+                               "sST": "embb",
+                               "uEMobilityLevel": "stationary",
+                               "activityFactor": "0",
+                               "coverageAreaTAList": "Beijing;Beijing;HaidanDistrict;WanshouluStreet",
+                               "modeluuid": "fe6c82b9-4e53-4322-a671-e2d8637bfbb7",
+                               "modelinvariantuuid": "7d7df980-cb81-45f8-bad9-4e5ad2876393"
+
                        }
                },
                {
                                "id": "NST_2_id",
                                "latency": 3,
                                "uplink": 7,
-                               "downlink": 1
+                               "downlink": 1,
+                               "areaTrafficCapDL": 100,
+                               "areaTrafficCapUL": 100,
+                               "maxNumberofUEs": 300,
+                               "areas": " area1|area2",
+                               "expDataRateDL": 10,
+                               "expDataRateUL": 30,
+                               "uEMobilityLevel": "stationary",
+                               "resourceSharingLevel": "shared",
+                               "skip_post_instantiation_configuration": "true",
+                               "controller_actor": "SO-REF-DATA",
+                               "modeluuid": "7981375e-5e0a-4bf5-93fa-f3e3c02f2b15",
+                               "modelinvariantuuid": "087f11b4-aca0-4341-8104-e5bb2b73285g"
                        }
                }
        ]
-}
\ No newline at end of file
+}
index c340a90..04d5ba7 100644 (file)
 
 
 import json
-from osdf.logging.osdf_logging import MH, audit_log
+import os
+BASE_DIR = os.path.dirname(__file__)
 """
 This application generates NST SELECTION API calls using the information received from SO
 """
 
-def buildSolution(request_json):
-    return {
-        "NSTsolution" : getNSTSolution(request_json)
-    }
 
-def getNSTSolution(request_json):
-# the file is in the same folder for now will move it to the conf folder o fthe has once its integrated there...
-    with open('./conf/configIinputs.json', 'r') as openfile:
-        serviceProfile = request_json["serviceProfile"]
-        resourceName = "NST"
-        serviceProfileParameters = serviceProfile["serviceProfileParameters"]
-        nst_object = json.load(openfile)
-        foundNst = False
-        for nst in nst_object[resourceName]:
-            [(nstName, nstList)] = nst.items()
-            matchall = False
-            for constraint_name in serviceProfileParameters:
-                value = serviceProfileParameters[constraint_name]
-                constraint_value= nstList[constraint_name]
-                if constraint_value != value:
-                    matchall = False
-                    break
-                else:
-                    matchall = True
-            if matchall:
-                foundNst = True
-                NSTName = nstList["name"]
-                matchlevel = 1
-    if not(foundNst):
-        NSTName = None
-        matchlevel = 0
-    return {
-        "invariantUUID" : "INvariant UUID",
-        "UUID" : "uuid",
-        "NSTName" : NSTName,
-        "matchLevel" : matchlevel
-    }
+def get_nst_solution(request_json):
+# the file is in the same folder for now will move it to the conf folder othe has once its integrated there...
+    config_input_json = os.path.join(BASE_DIR, 'conf/configIinputs.json')
+    try:
+        with open(config_input_json, 'r') as openfile:
+            serviceProfile = request_json["serviceProfile"]
+            nstSolutionList = []
+            resourceName = "NST"
+            serviceProfileParameters = serviceProfile["serviceProfileParameters"]
+            nst_object = json.load(openfile)
+            for nst in nst_object[resourceName]:
+                [(nstName, nstList)] = nst.items()
+                individual_nst = dict()
+                matchall = False
+                for constraint_name in serviceProfileParameters:
+                    value = serviceProfileParameters[constraint_name]
+                    constraint_value = nstList.get(constraint_name)
+                    if (not constraint_value):
+                        matchall = False
+                        break
+                    else:
+                        matchall = True
+                if matchall:
+                    individual_nst["NSTName"] = nstList.get("name")
+                    individual_nst["UUID"] = nstList.get("modeluuid")
+                    individual_nst["invariantUUID"] = nstList.get("modelinvariantuuid")
+                    individual_nst["individual_nst"] = 1
+                    nstSolutionList.append(individual_nst)
+
+        return nstSolutionList
+    except Exception as err:
+        raise err
 
 
 def process_nst_selection( request_json, osdf_config):
@@ -68,7 +65,7 @@ def process_nst_selection( request_json, osdf_config):
     :param osdf_config: Configuration specific to OSDF application (core + deployment)
     :return: response from NST Opt
     """
-    solution = buildSolution(request_json)
+    solution = get_nst_solution(request_json)
 
     return {
         "requestId" : request_json['requestInfo']['requestId'],