aboutsummaryrefslogtreecommitdiffstats
path: root/apps/nst/optimizers/nst_select_processor.py
diff options
context:
space:
mode:
Diffstat (limited to 'apps/nst/optimizers/nst_select_processor.py')
-rw-r--r--apps/nst/optimizers/nst_select_processor.py73
1 files changed, 35 insertions, 38 deletions
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'],