diff options
-rw-r--r-- | apps/nst/optimizers/conf/configIinputs.json | 44 | ||||
-rw-r--r-- | apps/nst/optimizers/nst_select_processor.py | 73 |
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'], |