summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/nst/optimizers/conf/configIinputs.json44
-rw-r--r--apps/nst/optimizers/nst_select_processor.py73
2 files changed, 73 insertions, 44 deletions
diff --git a/apps/nst/optimizers/conf/configIinputs.json b/apps/nst/optimizers/conf/configIinputs.json
index 59fd5ed..d4140f9 100644
--- a/apps/nst/optimizers/conf/configIinputs.json
+++ b/apps/nst/optimizers/conf/configIinputs.json
@@ -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"
+
}
},
{
@@ -14,8 +34,20 @@
"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
+}
diff --git a/apps/nst/optimizers/nst_select_processor.py b/apps/nst/optimizers/nst_select_processor.py
index c340a90..04d5ba7 100644
--- a/apps/nst/optimizers/nst_select_processor.py
+++ b/apps/nst/optimizers/nst_select_processor.py
@@ -17,48 +17,45 @@
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 of the 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'],