aboutsummaryrefslogtreecommitdiffstats
path: root/osdf
diff options
context:
space:
mode:
authorSastry Isukapalli <sastry@research.att.com>2018-03-28 22:21:30 -0400
committerSastry Isukapalli <sastry@research.att.com>2018-03-28 22:57:12 -0400
commitab7a87456538e561d60d209fe534c175ddd0269c (patch)
tree1724b218d148f989cf8e3647bc1bd703526f08c8 /osdf
parentad29f38cbcb164a7f328b26daf789dbff90deb98 (diff)
Functest scripts, simulators, and payloads
osdf/adapters/policy/utils.py: Removed duplicated code (group_policies and group_policies_gen are very similar, and group_policies seems to be not used osdf/optimizers/placementopt/conductor/api_builder.py: changed param name from "grouped_policies" to "flat_policies" tox.ini added starup and shutdown of simulators (flask app with mock payloads) in tox tests rest all files/changes in "test/" folder quite a few payload files Patch set 2: removed a "print()" statement from simulator code Issue-ID: OPTFRA-22 Change-Id: I0006c577fc459c7c884b55e8316c689afd151780 Signed-off-by: Sastry Isukapalli <sastry@research.att.com>
Diffstat (limited to 'osdf')
-rw-r--r--osdf/adapters/policy/utils.py31
-rw-r--r--osdf/optimizers/placementopt/conductor/api_builder.py3
-rw-r--r--osdf/optimizers/placementopt/conductor/conductor.py6
3 files changed, 5 insertions, 35 deletions
diff --git a/osdf/adapters/policy/utils.py b/osdf/adapters/policy/utils.py
index f165079..2f873af 100644
--- a/osdf/adapters/policy/utils.py
+++ b/osdf/adapters/policy/utils.py
@@ -23,37 +23,6 @@ import itertools
from osdf.utils.programming_utils import dot_notation, list_flatten
-def group_policies(flat_policies):
- """Filter policies using the following steps:
- 1. Apply prioritization among the policies that are sharing the same policy type and resource type
- 2. Remove redundant policies that may applicable across different types of resource
- 3. Filter policies based on type and return
- :param flat_policies: list of flat policies
- :return: Filtered policies
- """
- filtered_policies = defaultdict(list)
- policy_name = []
- policies = [x for x in flat_policies if x['content'].get('policyType')] # drop ones without 'policy_type'
- policy_types = set([x['content'].get('policyType') for x in policies])
- aggregated_policies = dict((x, defaultdict(list)) for x in policy_types)
-
- for policy in policies:
- policy_type = policy['content'].get('policyType')
- for resource in policy['content'].get('resources', []):
- aggregated_policies[policy_type][resource].append(policy)
-
- for policy_type in aggregated_policies:
- for resource in aggregated_policies[policy_type]:
- if aggregated_policies[policy_type][resource]:
- aggregated_policies[policy_type][resource].sort(key=lambda x: x['priority'], reverse=True)
- prioritized_policy = aggregated_policies[policy_type][resource][0]
- if prioritized_policy['policyName'] not in policy_name:
- # TODO: Check logic here... should policy appear only once across all groups?
- filtered_policies[prioritized_policy['content']['policyType']].append(prioritized_policy)
- policy_name.append(prioritized_policy['policyName'])
- return filtered_policies
-
-
def group_policies_gen(flat_policies, config):
"""Filter policies using the following steps:
1. Apply prioritization among the policies that are sharing the same policy type and resource type
diff --git a/osdf/optimizers/placementopt/conductor/api_builder.py b/osdf/optimizers/placementopt/conductor/api_builder.py
index e359500..b2a5bf7 100644
--- a/osdf/optimizers/placementopt/conductor/api_builder.py
+++ b/osdf/optimizers/placementopt/conductor/api_builder.py
@@ -25,7 +25,8 @@ from osdf.adapters.policy.utils import group_policies_gen
from osdf.utils.programming_utils import list_flatten
-def conductor_api_builder(request_json, flat_policies: list, local_config, template="templates/conductor_interface.json"):
+def conductor_api_builder(request_json, flat_policies: list, local_config,
+ template="osdf/templates/conductor_interface.json"):
"""Build an OSDF southbound API call for HAS-Conductor/Placement optimization
:param request_json: parameter data received from a client
:param flat_policies: policy data received from the policy platform (flat policies)
diff --git a/osdf/optimizers/placementopt/conductor/conductor.py b/osdf/optimizers/placementopt/conductor/conductor.py
index 41b901c..663857b 100644
--- a/osdf/optimizers/placementopt/conductor/conductor.py
+++ b/osdf/optimizers/placementopt/conductor/conductor.py
@@ -32,12 +32,12 @@ from osdf.utils.interfaces import RestClient
from osdf.operation.exceptions import BusinessException
-def request(req_object, osdf_config, grouped_policies):
+def request(req_object, osdf_config, flat_policies):
"""
Process a placement request from a Client (build Conductor API call, make the call, return result)
:param req_object: Request parameters from the client
:param osdf_config: Configuration specific to SNIRO application (core + deployment)
- :param grouped_policies: policies related to placement (fetched based on request, and grouped by policy type)
+ :param flat_policies: policies related to placement (fetched based on request)
:param prov_status: provStatus retrieved from Subscriber policy
:return: response from Conductor (accounting for redirects from Conductor service
"""
@@ -53,7 +53,7 @@ def request(req_object, osdf_config, grouped_policies):
ping_wait_time = config.get('conductorPingWaitTime', 60)
rc = RestClient(userid=uid, passwd=passwd, method="GET", log_func=debug_log.debug, headers=headers)
- conductor_req_json_str = conductor_api_builder(req_object, grouped_policies, local_config)
+ conductor_req_json_str = conductor_api_builder(req_object, flat_policies, local_config)
conductor_req_json = json.loads(conductor_req_json_str)
debug_log.debug("Sending first Conductor request for request_id {}".format(req_id))