aboutsummaryrefslogtreecommitdiffstats
path: root/osdf/adapters
diff options
context:
space:
mode:
authorVikas Varma <vikas.varma@att.com>2020-04-22 01:33:52 +0000
committerGerrit Code Review <gerrit@onap.org>2020-04-22 01:33:52 +0000
commitd4a0085a8f75c62912d19613459ad1bc3dce3e73 (patch)
treec357a3584ba8bdbd63bedef17011bbf37143c17b /osdf/adapters
parent2ac2b0c1c177dfec588b9c3439a41340d555897b (diff)
parent2754404822b496392717d260681946debecf8648 (diff)
Merge "add aggregation policy for NSI selection"
Diffstat (limited to 'osdf/adapters')
-rw-r--r--osdf/adapters/conductor/api_builder.py32
-rw-r--r--osdf/adapters/conductor/translation.py52
2 files changed, 47 insertions, 37 deletions
diff --git a/osdf/adapters/conductor/api_builder.py b/osdf/adapters/conductor/api_builder.py
index c99c5eb..daf8e54 100644
--- a/osdf/adapters/conductor/api_builder.py
+++ b/osdf/adapters/conductor/api_builder.py
@@ -34,7 +34,7 @@ def _build_parameters(group_policies, service_info, request_parameters):
:return:
"""
initial_params = tr.get_opt_query_data(request_parameters,
- group_policies['onap.policies.optimization.QueryPolicy'])
+ group_policies['onap.policies.optimization.service.QueryPolicy'])
params = dict()
params.update({"REQUIRED_MEM": initial_params.pop("requiredMemory", "")})
params.update({"REQUIRED_DISK": initial_params.pop("requiredDisk", "")})
@@ -46,7 +46,6 @@ def _build_parameters(group_policies, service_info, request_parameters):
for key, val in initial_params.items():
if val and val != "":
params.update({key: val})
-
return params
@@ -71,35 +70,38 @@ def conductor_api_builder(req_info, demands, request_parameters, service_info,
demand_name_list = []
for demand in demands:
demand_name_list.append(demand['resourceModuleName'].lower())
- demand_list = tr.gen_demands(demands, gp['onap.policies.optimization.VnfPolicy'])
+ demand_list = tr.gen_demands(demands, gp['onap.policies.optimization.resource.VnfPolicy'])
attribute_policy_list = tr.gen_attribute_policy(
- demand_name_list, gp['onap.policies.optimization.AttributePolicy'])
+ demand_name_list, gp['onap.policies.optimization.resource.AttributePolicy'])
distance_to_location_policy_list = tr.gen_distance_to_location_policy(
- demand_name_list, gp['onap.policies.optimization.DistancePolicy'])
+ demand_name_list, gp['onap.policies.optimization.resource.DistancePolicy'])
inventory_policy_list = tr.gen_inventory_group_policy(
- demand_name_list, gp['onap.policies.optimization.InventoryGroupPolicy'])
+ demand_name_list, gp['onap.policies.optimization.resource.InventoryGroupPolicy'])
resource_instance_policy_list = tr.gen_resource_instance_policy(
- demand_name_list, gp['onap.policies.optimization.ResourceInstancePolicy'])
+ demand_name_list, gp['onap.policies.optimization.resource.ResourceInstancePolicy'])
resource_region_policy_list = tr.gen_resource_region_policy(
- demand_name_list, gp['onap.policies.optimization.ResourceRegionPolicy'])
+ demand_name_list, gp['onap.policies.optimization.resource.ResourceRegionPolicy'])
zone_policy_list = tr.gen_zone_policy(
- demand_name_list, gp['onap.policies.optimization.AffinityPolicy'])
+ demand_name_list, gp['onap.policies.optimization.resource.AffinityPolicy'])
optimization_policy_list = tr.gen_optimization_policy(
- demand_name_list, gp['onap.policies.optimization.OptimizationPolicy'])
+ demand_name_list, gp['onap.policies.optimization.resource.OptimizationPolicy'])
reservation_policy_list = tr.gen_reservation_policy(
- demand_name_list, gp['onap.policies.optimization.InstanceReservationPolicy'])
+ demand_name_list, gp['onap.policies.optimization.resource.InstanceReservationPolicy'])
capacity_policy_list = tr.gen_capacity_policy(
- demand_name_list, gp['onap.policies.optimization.Vim_fit'])
+ demand_name_list, gp['onap.policies.optimization.resource.Vim_fit'])
hpa_policy_list = tr.gen_hpa_policy(
- demand_name_list, gp['onap.policies.optimization.HpaPolicy'])
+ demand_name_list, gp['onap.policies.optimization.resource.HpaPolicy'])
threshold_policy_list = tr.gen_threshold_policy(demand_name_list,
- gp['onap.policies.optimization.'
+ gp['onap.policies.optimization.resource.'
'ThresholdPolicy'])
+ aggregation_policy_list = tr.gen_aggregation_policy(demand_name_list,
+ gp['onap.policies.optimization.resource.'
+ 'AggregationPolicy'])
req_params_dict = _build_parameters(gp, service_info, request_parameters)
conductor_policies = [attribute_policy_list, distance_to_location_policy_list,
inventory_policy_list, resource_instance_policy_list,
resource_region_policy_list, zone_policy_list, reservation_policy_list,
- capacity_policy_list, hpa_policy_list, threshold_policy_list]
+ capacity_policy_list, hpa_policy_list, threshold_policy_list, aggregation_policy_list]
filtered_policies = [x for x in conductor_policies if len(x) > 0]
policy_groups = list_flatten(filtered_policies)
request_type = req_info.get('requestType', None)
diff --git a/osdf/adapters/conductor/translation.py b/osdf/adapters/conductor/translation.py
index 002af88..4b012f5 100644
--- a/osdf/adapters/conductor/translation.py
+++ b/osdf/adapters/conductor/translation.py
@@ -21,22 +21,22 @@ import json
import re
import yaml
-
from osdf.utils.programming_utils import dot_notation
policy_config_mapping = yaml.safe_load(open('config/has_config.yaml')).get('policy_config_mapping')
-CONSTRAINT_TYPE_MAP = {"onap.policies.optimization.AttributePolicy": "attribute",
- "onap.policies.optimization.DistancePolicy": "distance_to_location",
- "onap.policies.optimization.InventoryGroupPolicy": "inventory_group",
- "onap.policies.optimization.ResourceInstancePolicy": "instance_fit",
- "onap.policies.optimization.ResourceRegionPolicy": "region_fit",
- "onap.policies.optimization.AffinityPolicy": "zone",
- "onap.policies.optimization.InstanceReservationPolicy":
+CONSTRAINT_TYPE_MAP = {"onap.policies.optimization.resource.AttributePolicy": "attribute",
+ "onap.policies.optimization.resource.DistancePolicy": "distance_to_location",
+ "onap.policies.optimization.resource.InventoryGroupPolicy": "inventory_group",
+ "onap.policies.optimization.resource.ResourceInstancePolicy": "instance_fit",
+ "onap.policies.optimization.resource.ResourceRegionPolicy": "region_fit",
+ "onap.policies.optimization.resource.AffinityPolicy": "zone",
+ "onap.policies.optimization.resource.InstanceReservationPolicy":
"instance_reservation",
- "onap.policies.optimization.Vim_fit": "vim_fit",
- "onap.policies.optimization.HpaPolicy": "hpa",
- "onap.policies.optimization.ThresholdPolicy": "threshold"
+ "onap.policies.optimization.resource.Vim_fit": "vim_fit",
+ "onap.policies.optimization.resource.HpaPolicy": "hpa",
+ "onap.policies.optimization.resource.ThresholdPolicy": "threshold",
+ "onap.policies.optimization.resource.AggregationPolicy": "aggregation"
}
@@ -233,8 +233,16 @@ def gen_hpa_policy(vnf_list, hpa_policy):
def gen_threshold_policy(vnf_list, threshold_policy):
cur_policies, related_policies = gen_policy_instance(vnf_list, threshold_policy, rtype=None)
for p_new, p_main in zip(cur_policies, related_policies):
- pmz = p_main[list(p_main.keys())[0]]['properties']['thresholdProperty']
- p_new[p_main[list(p_main.keys())[0]]['properties']['identity']]['properties'] = pmz
+ pmz = p_main[list(p_main.keys())[0]]['properties']['thresholdProperties']
+ p_new[p_main[list(p_main.keys())[0]]['properties']['identity']]['properties'] = {'evaluate': pmz}
+ return cur_policies
+
+
+def gen_aggregation_policy(vnf_list, cross_policy):
+ cur_policies, related_policies = gen_policy_instance(vnf_list, cross_policy, rtype=None)
+ for p_new, p_main in zip(cur_policies, related_policies):
+ pmz = p_main[list(p_main.keys())[0]]['properties']['aggregationProperties']
+ p_new[p_main[list(p_main.keys())[0]]['properties']['identity']]['properties'] = {'evaluate': pmz}
return cur_policies
@@ -281,15 +289,6 @@ def get_demand_properties(demand, policies):
prop.update({'unique': policy_property['unique']} if 'unique' in policy_property and
policy_property['unique'] else {})
prop['filtering_attributes'] = dict()
- prop['filtering_attributes'].update({'global-customer-id': policy_property['customerId']}
- if 'customerId' in policy_property and policy_property['customerId'] else {})
- prop['filtering_attributes'].update({'model-invariant-id': demand['resourceModelInfo']['modelInvariantId']}
- if demand['resourceModelInfo']['modelInvariantId'] else {})
- prop['filtering_attributes'].update({'model-version-id': demand['resourceModelInfo']['modelVersionId']}
- if demand['resourceModelInfo']['modelVersionId'] else {})
- prop['filtering_attributes'].update({'equipment-role': policy_property['equipmentRole']}
- if 'equipmentRole' in policy_property and policy_property['equipmentRole'] else {})
-
if policy_property.get('attributes'):
for attr_key, attr_val in policy_property['attributes'].items():
update_converted_attribute(attr_key, attr_val, prop, 'filtering_attributes')
@@ -298,6 +297,15 @@ def get_demand_properties(demand, policies):
for attr_key, attr_val in policy_property['passthroughAttributes'].items():
update_converted_attribute(attr_key, attr_val, prop, 'passthrough_attributes')
+ prop['filtering_attributes'].update({'global-customer-id': policy_property['customerId']}
+ if 'customerId' in policy_property and policy_property['customerId'] else {})
+ prop['filtering_attributes'].update({'model-invariant-id': demand['resourceModelInfo']['modelInvariantId']}
+ if 'modelInvariantId' in demand['resourceModelInfo'] and demand['resourceModelInfo']['modelInvariantId'] else {})
+ prop['filtering_attributes'].update({'model-version-id': demand['resourceModelInfo']['modelVersionId']}
+ if 'modelVersionId' in demand['resourceModelInfo'] and demand['resourceModelInfo']['modelVersionId'] else {})
+ prop['filtering_attributes'].update({'equipment-role': policy_property['equipmentRole']}
+ if 'equipmentRole' in policy_property and policy_property['equipmentRole'] else {})
+
prop.update(get_candidates_demands(demand))
demand_properties.append(prop)
return demand_properties