From 616d7ba3006001bc53c668e5a34ae943855c2295 Mon Sep 17 00:00:00 2001 From: Ankitkumar Patel Date: Wed, 28 Mar 2018 23:39:50 -0400 Subject: Added optimization query processing module. Added optimization query processing module. Issue-ID: OPTFRA-177 Change-Id: I4dd395b77bfe4bc392b90bc7087338f050fa622d Signed-off-by: Ankitkumar Patel --- .../optimizers/placementopt/conductor/translation.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'osdf/optimizers/placementopt/conductor/translation.py') diff --git a/osdf/optimizers/placementopt/conductor/translation.py b/osdf/optimizers/placementopt/conductor/translation.py index e02ab19..5f44c83 100644 --- a/osdf/optimizers/placementopt/conductor/translation.py +++ b/osdf/optimizers/placementopt/conductor/translation.py @@ -20,10 +20,30 @@ import json import yaml from osdf.utils.data_conversion import text_to_symbol +from osdf.utils.programming_utils import dot_notation policy_config_mapping = yaml.load(open('config/has_config.yaml')).get('policy_config_mapping') +def get_opt_query_data(req_json, policies): + """ + Fetch service and order specific details from the requestParameters field of a request. + :param req_json: a request file + :param policies: A set of policies + :return: A dictionary with service and order-specific attributes. + """ + req_param_dict = {} + if 'requestParameters' in req_json["placementInfo"]: + req_params = req_json["placementInfo"]["requestParameters"] + for policy in policies: + for queryProp in policy['content']['queryProperties']: + attr_val = queryProp['value'] if 'value' in queryProp and queryProp['value'] != "" \ + else dot_notation(req_params, queryProp['attribute_location']) + if attr_val is not None: + req_param_dict.update({queryProp['attribute']: attr_val}) + return req_param_dict + + def gen_optimization_policy(vnf_list, optimization_policy): """Generate optimization policy details to pass to Conductor :param vnf_list: List of vnf's to used in placement request -- cgit 1.2.3-korg