diff options
39 files changed, 262 insertions, 857 deletions
diff --git a/config/common_config.yaml b/config/common_config.yaml index ec7098e..24278d1 100644 --- a/config/common_config.yaml +++ b/config/common_config.yaml @@ -38,6 +38,15 @@ references: value: content.properties.subscriberRole policy_info: + prioritization_attributes: + policy_type: + - content.policyType + resources: + - content.resources + - content.objectiveParameter.parameterAttributes.resources + service_name: + - content.serviceName + placement: policy_fetch: by_scope policy_scope: diff --git a/osdf/adapters/policy/utils.py b/osdf/adapters/policy/utils.py index 9acfa2a..95d03af 100644 --- a/osdf/adapters/policy/utils.py +++ b/osdf/adapters/policy/utils.py @@ -19,7 +19,7 @@ import copy import json from collections import defaultdict - +import itertools from osdf.utils.programming_utils import dot_notation, list_flatten @@ -33,13 +33,13 @@ def group_policies(flat_policies): """ filtered_policies = defaultdict(list) policy_name = [] - policies = [x for x in flat_policies if x['content'].get('policy_type')] # drop ones without 'policy_type' + 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('resourceInstanceType', []): + for resource in policy['content'].get('resources', []): aggregated_policies[policy_type][resource].append(policy) for policy_type in aggregated_policies: @@ -54,6 +54,38 @@ def group_policies(flat_policies): 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 + 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' + priority = config.get('policy_info', {}).get('prioritization_attributes', {}) + aggregated_policies = dict() + for plc in policies: + attrs = [dot_notation(plc, dot_path) for key in priority.keys() for dot_path in priority[key]] + attrs_list = [x if isinstance(x, list) else [x] for x in attrs] + attributes = [list_flatten(x) if isinstance(x, list) else x for x in attrs_list] + for y in itertools.product(*attributes): + aggregated_policies.setdefault(y, []) + aggregated_policies[y].append(plc) + + for key in aggregated_policies.keys(): + aggregated_policies[key].sort(key=lambda x: x['priority'], reverse=True) + prioritized_policy = aggregated_policies[key][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 policy_name_as_regex(policy_name): """Get the correct policy name as a regex (e.g. OOF_HAS_vCPE.cloudAttributePolicy ends up in policy as OOF_HAS_vCPE.Config_MS_cloudAttributePolicy.1.xml diff --git a/osdf/optimizers/placementopt/conductor/api_builder.py b/osdf/optimizers/placementopt/conductor/api_builder.py index bfc7f19..55044d0 100644 --- a/osdf/optimizers/placementopt/conductor/api_builder.py +++ b/osdf/optimizers/placementopt/conductor/api_builder.py @@ -21,12 +21,11 @@ import json from jinja2 import Template import osdf.optimizers.placementopt.conductor.translation as tr -from osdf.adapters.policy.utils import group_policies +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, prov_status, - template="templates/conductor_interface.json"): +def conductor_api_builder(request_json, flat_policies: list, local_config, template="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) @@ -36,7 +35,7 @@ def conductor_api_builder(request_json, flat_policies: list, local_config, prov_ :return: json to be sent to Conductor/placement optimization """ templ = Template(open(template).read()) - gp = group_policies(flat_policies) + gp = group_policies_gen(flat_policies, local_config) demand_vnf_name_list = [] for placementDemand in request_json['placementInfo']['placementDemands']: @@ -60,31 +59,29 @@ def conductor_api_builder(request_json, flat_policies: list, local_config, prov_ reservation_policies = [x for x in reservation_policy_list if len(x) > 0] reservation_groups = list_flatten(reservation_policies) req_info = request_json['requestInfo'] - model_name = request_json['serviceInfo']['serviceName'] - service_type = model_name + request_type = req_info.get('requestType', None) + service_type = request_json['serviceInfo']['serviceName'] service_info = local_config.get('service_info', {}).get(service_type, {}) order_info = {} if 'orderInfo' in request_json["placementInfo"]: order_info = json.loads(request_json["placementInfo"]["orderInfo"]) - request_type = req_info.get('requestType', None) + subs_com_site_id = "" if 'subscriberInfo' in request_json['placementInfo']: subs_com_site_id = request_json['placementInfo']['subscriberInfo'].get('subscriberCommonSiteId', "") - rendered_req = None - if service_type == 'vCPE': - rendered_req = templ.render( - requestType=request_type, - chosenComplex=subs_com_site_id, - demand_list=demand_list, - policy_groups=policy_groups, - optimization_policies=optimization_policy_list, - name=req_info['requestId'], - timeout=req_info['timeout'], - limit=req_info['numSolutions'], - serviceType=service_type, - serviceInstance=request_json['serviceInfo']['serviceInstanceId'], - provStatus=prov_status, - chosenRegion=order_info.get('requestParameters', {}).get('lcpCloudRegionId'), - json=json) + rendered_req = templ.render( + requestType=request_type, + chosenComplex=subs_com_site_id, + demand_list=demand_list, + policy_groups=policy_groups, + optimization_policies=optimization_policy_list, + name=req_info['requestId'], + timeout=req_info['timeout'], + limit=req_info['numSolutions'], + service_type=request_json['serviceInfo']['serviceName'], + service_id=request_json['serviceInfo']['serviceInstanceId'], + provStatus="", + chosenRegion=order_info.get('requestParameters', {}).get('lcpCloudRegionId'), + json=json) json_payload = json.dumps(json.loads(rendered_req)) # need this because template's JSON is ugly! return json_payload diff --git a/osdf/optimizers/placementopt/conductor/translation.py b/osdf/optimizers/placementopt/conductor/translation.py index 9111c81..91706b7 100644 --- a/osdf/optimizers/placementopt/conductor/translation.py +++ b/osdf/optimizers/placementopt/conductor/translation.py @@ -37,8 +37,8 @@ def gen_optimization_policy(vnf_list, optimization_policy): for attr in content['objectiveParameter']['parameterAttributes']: parameter = attr['parameter'] if attr['parameter'] == "cloud_version" else attr['parameter']+"_between" - for res in attr['resource']: - vnf = get_matching_vnf(res, vnf_list) + vnfs = get_matching_vnfs(attr['resources'], vnf_list) + for vnf in vnfs: value = [vnf] if attr['parameter'] == "cloud_version" else [attr['customerLocationInfo'], vnf] parameter_list.append({ attr['operator']: [attr['weight'], {parameter: value}] @@ -66,7 +66,7 @@ def get_matching_vnfs(resources, vnf_list, match_type="intersection"): :return: List of matching VNFs """ if match_type == "all": # don't bother with any comparisons - return resources + return resources if set(resources) <= set(vnf_list) else None common_vnfs = set(vnf_list) & set(resources) if match_type == "intersection": # specifically requested intersection return list(common_vnfs) @@ -87,8 +87,8 @@ def gen_policy_instance(vnf_list, resource_policy, match_type="intersection", rt related_policies = [] for policy in resource_policy: pc = policy['content'] - demands = get_matching_vnfs(pc['resourceInstanceType'], vnf_list, match_type=match_type) - resource = {pc['identity']: {'type': pc['type'], 'demands': demands}} + demands = get_matching_vnfs(pc['resources'], vnf_list, match_type=match_type) + resource = {pc['identity']: {'type': pc['policyType'], 'demands': demands}} if rtype: resource[pc['identity']]['properties'] = {'controller': pc[rtype]['controller'], @@ -127,10 +127,10 @@ def gen_distance_to_location_policy(vnf_list, distance_to_location_policy): """Get policies governing distance-to-location for VNFs in order to populate the Conductor API call""" cur_policies, related_policies = gen_policy_instance(vnf_list, distance_to_location_policy, rtype=None) for p_new, p_main in zip(cur_policies, related_policies): # add additional fields to each policy - properties = p_main['content']['distanceToLocationProperty'] - pcp_d = properties['distanceCondition'] + properties = p_main['content']['distanceProperties'] + pcp_d = properties['distance'] p_new[p_main['content']['identity']]['properties'] = { - 'distance': text_to_symbol[pcp_d['operator']] + " " + pcp_d['value'].lower(), + 'distance': pcp_d['operator'] + " " + pcp_d['value'].lower() + " " + pcp_d['unit'].lower(), 'location': properties['locationInfo'] } return cur_policies @@ -150,9 +150,9 @@ def gen_attribute_policy(vnf_list, attribute_policy): def gen_zone_policy(vnf_list, zone_policy): """Get zone policies in order to populate the Conductor API call""" - cur_policies, related_policies = gen_policy_instance(vnf_list, zone_policy, rtype=None) + cur_policies, related_policies = gen_policy_instance(vnf_list, zone_policy, match_type="all", rtype=None) for p_new, p_main in zip(cur_policies, related_policies): # add additional fields to each policy - pmz = p_main['content']['zoneProperty'] + pmz = p_main['content']['affinityProperty'] p_new[p_main['content']['identity']]['properties'] = {'category': pmz['category'], 'qualifier': pmz['qualifier']} return cur_policies @@ -179,9 +179,9 @@ def get_candidates_demands(demand): def get_policy_properties(demand, policies): """Get policy_properties for cases where there is a match with the demand""" for policy in policies: - if not set(policy['content'].get('resourceInstanceType', [])) & set(demand['resourceModuleName']): + if demand['resourceModuleName'] not in set(policy['content'].get('resources', [])): continue # no match for this policy - for policy_property in policy['content']['property']: + for policy_property in policy['content']['vnfProperties']: yield policy_property diff --git a/osdf/templates/conductor_interface.json b/osdf/templates/conductor_interface.json index 2b48647..64f9c4f 100755 --- a/osdf/templates/conductor_interface.json +++ b/osdf/templates/conductor_interface.json @@ -4,52 +4,20 @@ "timeout": {{ timeout }},
"limit": {{ limit }},
"template": {
- "conductor_template_version": "2018-02-01",
+ "homing_template_version": "2017-10-10",
"parameters": {
- "REQUEST_TYPE": "{{ requestType }}",
- "CHOSEN_REGION": "{{ chosenRegion }}",
- "LATITUDE": "{{ latitude }}",
- "LONGITUDE": "{{ longitude }}",
- {% if serviceType == 'DHV' %}
- "E2EVPNKEY": "{{ e2eVpnKey }}",
- "UCPEHOST": "{{ ucpeHostName }}",
- "EFFECTIVE_BANDWIDTH": "{{ effectiveBandwidth }}",
- "WAN_PORT1_UP": "{{ ipsec_bw_up }}",
- "WAN_PORT1_DOWN": "{{ ipsec_bw_down }}",
- "WAN_PORT2_UP": "{{ ipsec2_bw_up }}",
- "WAN_PORT2_DOWN": "{{ ipsec2_bw_down }}",
- {% endif %}
- {% if serviceType != 'DHV' %}
- "GW_TENANT_ID": "{{ gwTenantId }}",
- "PORTAL_TENANT_ID": "{{ portalTenantId }}",
- {% endif %}
- "CHOSEN_COMPLEX": "{{ chosenComplex }}",
- {% if serviceType == 'ADIOD' or serviceType == 'VPE' %}
- "BANDWIDTH": "{{ bandwidth }}",
- "UNIT": "{{ bandwidth_unit }}",
- {% endif %}
- "SERVICE_INST": "{{ serviceInstance }}",
- "PROV_STATUS": {{ json.dumps(provStatus) }}
+ "service_name": "{{ service_name }}",
+ "service_id": "{{ service_id }}",
+ "customer_lat": "{{ latitude }}",
+ "customer_long": "{{ longitude }}",
+ "REQUIRED_MEM": "{{ memory }}",
+ "REQUIRED_DISK": "{{ storage }}"
},
"locations": {
- {% if serviceType == 'DHV' %}
"customer_loc": {
- "host_name": { "get_param": "UCPEHOST" }
+ "latitude": { "get_param": "customer_lat" },
+ "longitude": { "get_param": "customer_long" }
}
- {% elif serviceType == 'ADIOD' %}
- "customer_pref_location": {
- "clli_code": { "get_param": "CHOSEN_COMPLEX" }
- }
- {% elif serviceType == 'NETBOND' %}
- "peering_point": {
- "latitude": { "get_param": "LATITUDE" },
- "longitude": { "get_param": "LONGITUDE" }
- }
- {% else %}
- "customer_pref_loc": {
- "clli_code": { "get_param": "CHOSEN_COMPLEX" }
- }
- {% endif %}
},
"demands": {{ json.dumps(demand_list) }},
{% set comma_main = joiner(",") %}
@@ -61,14 +29,6 @@ {% endfor %}
{% endfor %}
},
- "reservation": {
- {% set comma=joiner(",") %}
- {% for elem in reservation_groups %} {{ comma() }}
- {% for key, value in elem.items() %}
- "{{key}}": {{ json.dumps(value) }}
- {% endfor %}
- {% endfor %}
- },
"optimization": {
{% set comma=joiner(",") %}
{% for elem in optimization_policies %} {{ comma() }}
diff --git a/test/conductor/test_conductor_translation.py b/test/conductor/test_conductor_translation.py index b277b6a..0c7da94 100644 --- a/test/conductor/test_conductor_translation.py +++ b/test/conductor/test_conductor_translation.py @@ -44,7 +44,9 @@ class TestConductorTranslation(unittest.TestCase): pass def test_gen_demands(self): - res = tr.gen_demands(self.request_json, self.policies) + # need to run this only on vnf policies + vnf_policies = [x for x in self.policies if x["content"]["policyType"] == "vnfPolicy"] + res = tr.gen_demands(self.request_json, vnf_policies) assert res is not None diff --git a/test/config/common_config.yaml b/test/config/common_config.yaml index 6a5f5e1..2461fd8 100644 --- a/test/config/common_config.yaml +++ b/test/config/common_config.yaml @@ -38,6 +38,14 @@ references: value: content.properties.subscriberRole policy_info: + prioritization_attributes: + policy_type: + - content.policyType + resources: + - content.resources + - content.objectiveParameter.parameterAttributes.resources + service_name: + - content.serviceName placement: policy_fetch: by_scope policy_scope: diff --git a/test/config/has_config.yaml b/test/config/has_config.yaml index 8cbeda2..c31d666 100644 --- a/test/config/has_config.yaml +++ b/test/config/has_config.yaml @@ -10,7 +10,7 @@ policy_config_mapping: country: country, geo_region: geoRegion, exclusivity_groups: exclusivityGroups, - replication_role: replicationRole, + replication_role: replicationRole remapping: model-invariant-id: modelInvariantId, model-version-id: modelVersionId diff --git a/test/operation/test_responses.py b/test/operation/test_responses.py index 2e089ec..c023ef2 100644 --- a/test/operation/test_responses.py +++ b/test/operation/test_responses.py @@ -27,22 +27,11 @@ class TestLocalPolicies(unittest.TestCase): def __init__(self, *args, **kwargs): super(self.__class__, self).__init__(*args, **kwargs) self.folder = './test/policy-local-files' - self.invalid_policies = ['INVALID-one.json', 'INVALID-two.json'] - self.valid_policies = [ - 'Affinity_vCPE_1.json', - 'Capacity_vG_1.json', - 'Distance_vG_1.json', - 'Placement_Optimization_1.json', - 'hpa_policy_vGMuxInfra_1.json', - 'vnfPolicy_vG.json', - 'Capacity_vGMuxInfra.json', - 'Distance_vGMuxInfra_1.json', - 'Min_Guarantee_vGMuxInfra_1.json', - 'QueryPolicy_vCPE.json', - 'hpa_policy_vG_1.json', - 'vnfPolicy_vGMuxInfra.json' - ] - + self.valid_policies_file = self.folder + '/' + 'meta-valid-policies.txt' + self.invalid_policies_file = self.folder + '/' + 'meta-invalid-policies.txt' + self.valid_policies = local_policies.get_policy_names_from_file(self.valid_policies_file) + self.invalid_policies = local_policies.get_policy_names_from_file(self.invalid_policies_file) + def test_get_local_policies_no_policies(self): with self.assertRaises(FileNotFoundError): res = local_policies.get_local_policies(self.folder, self.invalid_policies) @@ -60,25 +49,3 @@ class TestLocalPolicies(unittest.TestCase): if __name__ == "__main__": unittest.main() - -from flask import Response - -from osdf import ACCEPTED_MESSAGE_TEMPLATE - - -def osdf_response_for_request_accept(req_id="", text="", response_code=202, as_http=True): - """Helper method to create a response object for request acceptance, so that the object can be sent to a client - :param req_id: request ID provided by the caller - :param text: extra text description about accepting the request (e.g. "Request accepted") - :param response_code: the HTTP status code to send -- default is 202 (accepted) - :param as_http: whether to send response as HTTP response object or as a string - :return: if as_http is True, return a HTTP Response object. Otherwise, return json-encoded-message - """ - response_message = ACCEPTED_MESSAGE_TEMPLATE.render(description=text, request_id=req_id) - if not as_http: - return response_message - - response = Response(response_message, content_type='application/json; charset=utf-8') - response.headers.add('content-length', len(response_message)) - response.status_code = response_code - return response diff --git a/test/placement-tests/policy_response.json b/test/placement-tests/policy_response.json index ed5b4ab..19c66f8 100644 --- a/test/placement-tests/policy_response.json +++ b/test/placement-tests/policy_response.json @@ -93,7 +93,7 @@ "policyConfigMessage": "Config Retrieved! ", "policyConfigStatus": "CONFIG_RETRIEVED", "type": "JSON", - "config": "{\"service\":\"capacityPolicy\",\"policyName\":\"oofBeijing.capacityPolicy_vG\",\"description\":\"Capacity policy for vG\",\"templateVersion\":\"1702.03\",\"version\":\"oofBeijing\",\"priority\":\"5\",\"riskType\":\"test\",\"riskLevel\":\"2\",\"guard\":\"False\",\"content\":{\"identity\":\"capacity_vG\",\"policyScope\":[\"VCPE\",\"US\",\"INTERNATIONAL\",\"ip\",\"vG\"],\"resources\":[\"vG\"],\"capacityProperty\":{\"cpu\":{\"value\":2,\"operator\":\">\"},\"memory\":{\"value\":4,\"operator\":\">\",\"unit\":\"GB\"}},\"policyType\":\"capacityPolicy\",\"applicableResources\":\"any\"}}", + "config": "{\"service\": \"capacityPolicy\", \"policyName\": \"oofBeijing.capacityPolicy_vG\", \"description\": \"Capacity policy for vG\", \"templateVersion\": \"1702.03\", \"version\": \"oofBeijing\", \"priority\": \"5\", \"riskType\": \"test\", \"riskLevel\": \"2\", \"guard\": \"False\", \"content\": {\"identity\": \"capacity_vG\", \"policyScope\": [\"VCPE\", \"US\", \"INTERNATIONAL\", \"ip\", \"vG\", \"vim_fit\"], \"resources\": [\"vG\"], \"capacityProperty\": {\"controller\": \"multicloud\", \"request\": \"{\\\"vCPU\\\": 10, \\\"Memory\\\": {\\\"quantity\\\": {\\\"get_param\\\": \\\"REQUIRED_MEM\\\"}, \\\"unit\\\": \\\"GB\\\"}, \\\"Storage\\\": {\\\"quantity\\\": {\\\"get_param\\\": \\\"REQUIRED_DISK\\\", \\\"unit\\\": \\\"GB\\\"}}}\"}, \"policyType\": \"vim_fit\", \"applicableResources\": \"any\"}}", "policyName": "oofBeijing.Config_MS_capacityPolicy_vG.1.xml", "policyVersion": "1", "matchingConditions": { @@ -111,7 +111,7 @@ "policyConfigMessage": "Config Retrieved! ", "policyConfigStatus": "CONFIG_RETRIEVED", "type": "JSON", - "config": "{\"service\":\"optimizationQueryPolicy\",\"policyName\":\"oofBeijing.queryPolicy_vCPE\",\"description\":\"Optimization query policy for vCPE\",\"templateVersion\":\"0.0.1\",\"version\":\"oofBeijing\",\"priority\":\"3\",\"riskType\":\"test\",\"riskLevel\":\"2\",\"guard\":\"False\",\"content\":{\"queryProperties\":[{\"attribute\":\"locationId\",\"value\":\"orderInfo.customerLocation\"},{\"attribute\":\"id\",\"value\":\"orderInfo.vpnInfo\"},{\"attribute\":\"upstreamBW\",\"value\":\"orderInfo.vpnInfo\"}],\"policyScope\":[\"vCPE\",\"US\",\"INTERNATIONAL\",\"ip\",\"vGMuxInfra\",\"vG\"],\"policyType\":\"optimizationQueryPolicy\"}}", + "config": "{\"service\": \"optimizationQueryPolicy\", \"policyName\": \"oofBeijing.queryPolicy_vCPE\", \"description\": \"Optimization query policy for vCPE\", \"templateVersion\": \"0.0.1\", \"version\": \"oofBeijing\", \"priority\": \"3\", \"riskType\": \"test\", \"riskLevel\": \"2\", \"guard\": \"False\", \"content\": {\"queryProperties\": [{\"attribute\": \"locationId\", \"attribute_location\": \"customerLocation\", \"value\": \"\"}, {\"attribute\": \"id\", \"attribute_location\": \"vpnInfo.vpnId\", \"value\": \"\"}, {\"attribute\": \"upstreamBW\", \"attribute_location\": \"vpnInfo.upstreamBW\", \"value\": \"\"}, {\"attribute\": \"customerLatitude\", \"attribute_location\": \"customerLatitude\", \"value\": 32.89748}, {\"attribute\": \"customerLongitude\", \"attribute_location\": \"customerLongitude\", \"value\": -97.040443}], \"policyScope\": [\"vCPE\", \"US\", \"INTERNATIONAL\", \"ip\", \"vGMuxInfra\", \"vG\", \"optimizationQueryPolicy\"], \"policyType\": \"optimizationQueryPolicy\"}}", "policyName": "oofBeijing.Config_MS_queryPolicy_vCPE.1.xml", "policyVersion": "1", "matchingConditions": { @@ -165,7 +165,7 @@ "policyConfigMessage": "Config Retrieved! ", "policyConfigStatus": "CONFIG_RETRIEVED", "type": "JSON", - "config": "{\"service\":\"capacityPolicy\",\"policyName\":\"oofBeijing.capacityPolicy_vGMuxInfra\",\"description\":\"Capacity policy for vGMuxInfra\",\"templateVersion\":\"1702.03\",\"version\":\"oofBeijing\",\"priority\":\"5\",\"riskType\":\"test\",\"riskLevel\":\"2\",\"guard\":\"False\",\"content\":{\"identity\":\"capacity_vGMuxInfra\",\"policyScope\":[\"VCPE\",\"US\",\"INTERNATIONAL\",\"ip\",\"vGMuxInfra\"],\"resources\":[\"vGMuxInfra\"],\"capacityProperty\":{\"cpu\":{\"value\":2,\"operator\":\">\"},\"memory\":{\"value\":4,\"operator\":\">\",\"unit\":\"GB\"}},\"policyType\":\"capacityPolicy\",\"applicableResources\":\"any\"}}", + "config": "{\"service\": \"capacityPolicy\", \"policyName\": \"oofBeijing.capacityPolicy_vGMuxInfra\", \"description\": \"Capacity policy for vGMuxInfra\", \"templateVersion\": \"1702.03\", \"version\": \"oofBeijing\", \"priority\": \"5\", \"riskType\": \"test\", \"riskLevel\": \"2\", \"guard\": \"False\", \"content\": {\"identity\": \"capacity_vGMuxInfra\", \"policyScope\": [\"VCPE\", \"US\", \"INTERNATIONAL\", \"ip\", \"vGMuxInfra\", \"vim_fit\"], \"resources\": [\"vGMuxInfra\"], \"capacityProperty\": {\"controller\": \"multicloud\", \"request\": \"{\\\"vCPU\\\": 10, \\\"Memory\\\": {\\\"quantity\\\": {\\\"get_param\\\": \\\"REQUIRED_MEM\\\"}, \\\"unit\\\": \\\"GB\\\"}, \\\"Storage\\\": {\\\"quantity\\\": {\\\"get_param\\\": \\\"REQUIRED_DISK\\\", \\\"unit\\\": \\\"GB\\\"}}}\"}, \"policyType\": \"vim_fit\", \"applicableResources\": \"any\"}}", "policyName": "oofBeijing.Config_MS_capacityPolicy_vGMuxInfra.1.xml", "policyVersion": "1", "matchingConditions": { diff --git a/test/policy-local-files/Affinity_vCPE_1.json b/test/policy-local-files/Affinity_vCPE_1.json index c42e9d8..4a3e086 100644 --- a/test/policy-local-files/Affinity_vCPE_1.json +++ b/test/policy-local-files/Affinity_vCPE_1.json @@ -15,7 +15,8 @@ "qualifier": "different", "category": "complex" }, - "policyType": "affinityPolicy", - "resources": ["vGMuxInfra", "vG"] + "policyType": "zone", + "resources": ["vGMuxInfra", "vG"], + "applicableResources": "all" } -} +}
\ No newline at end of file diff --git a/test/policy-local-files/Capacity_vGMuxInfra.json b/test/policy-local-files/Capacity_vGMuxInfra.json index 9eec54d..06896c3 100644 --- a/test/policy-local-files/Capacity_vGMuxInfra.json +++ b/test/policy-local-files/Capacity_vGMuxInfra.json @@ -10,12 +10,13 @@ "guard": "False", "content": { "identity": "capacity_vGMuxInfra", - "policyScope": ["VCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra"], - "resources": ["vGMuxInfra"], + "policyScope": ["VCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra", "vim_fit"], + "resources": ["vGMuxInfra"], "capacityProperty": { - "cpu": {"value": 2, "operator": ">"}, - "memory": {"value": 4, "operator": ">", "unit": "Gb"} + "controller": "multicloud", + "request": "{\"vCPU\": 10, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, \"unit\": \"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\", \"unit\": \"GB\"}}}" }, - "policyType": "capacityPolicy" + "policyType": "vim_fit", + "applicableResources": "any" } } diff --git a/test/policy-local-files/Capacity_vG_1.json b/test/policy-local-files/Capacity_vG_1.json index d5644a8..851ea49 100644 --- a/test/policy-local-files/Capacity_vG_1.json +++ b/test/policy-local-files/Capacity_vG_1.json @@ -1,7 +1,7 @@ { "service": "capacityPolicy", - "policyName": "oofBeijing.capacityPolicy_vGMuxInfra", - "description": "Capacity policy for vGMuxInfra", + "policyName": "oofBeijing.capacityPolicy_vG", + "description": "Capacity policy for vG", "templateVersion": "1702.03", "version": "oofBeijing", "priority": "5", @@ -9,13 +9,14 @@ "riskLevel": "2", "guard": "False", "content": { - "identity": "capacity_vGMuxInfra", - "policyScope": ["VCPE", "US", "INTERNATIONAL", "ip", "vG"], - "resources": ["vG"], + "identity": "capacity_vG", + "policyScope": ["VCPE", "US", "INTERNATIONAL", "ip", "vG", "vim_fit"], + "resources": ["vG"], "capacityProperty": { - "cpu": {"value": 2, "operator": ">"}, - "memory": {"value": 4, "operator": ">", "unit": "Gb"} + "controller": "multicloud", + "request": "{\"vCPU\": 10, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, \"unit\": \"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\", \"unit\": \"GB\"}}}" }, - "policyType": "capacityPolicy" + "policyType": "vim_fit", + "applicableResources": "any" } } diff --git a/test/policy-local-files/Distance_vGMuxInfra_1.json b/test/policy-local-files/Distance_vGMuxInfra_1.json index a835ef1..992e9ec 100644 --- a/test/policy-local-files/Distance_vGMuxInfra_1.json +++ b/test/policy-local-files/Distance_vGMuxInfra_1.json @@ -15,7 +15,8 @@ }, "identity": "distance-vGMuxInfra", "resources": ["vGMuxInfra"], - "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra"], - "policyType": "distancePolicy" + "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra", "distancePolicy"], + "policyType": "distance_to_location", + "applicableResources": "any" } } diff --git a/test/policy-local-files/Distance_vG_1.json b/test/policy-local-files/Distance_vG_1.json index 1af021a..07baabd 100644 --- a/test/policy-local-files/Distance_vG_1.json +++ b/test/policy-local-files/Distance_vG_1.json @@ -15,7 +15,8 @@ }, "identity": "distance-vG", "resources": ["vG"], - "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vG"], - "policyType": "distancePolicy" + "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vG", "distancePolicy"], + "policyType": "distance_to_location", + "applicableResources": "any" } } diff --git a/test/policy-local-files/Min_Guarantee_vGMuxInfra_1.json b/test/policy-local-files/Min_Guarantee_vGMuxInfra_1.json deleted file mode 100644 index 654c548..0000000 --- a/test/policy-local-files/Min_Guarantee_vGMuxInfra_1.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "service": "minGuaranteePolicy", - "policyName": "oofBeijing.minGuaranee_vGMuxInfra", - "description": "Min guarantee policy for vGMuxInfra", - "templateVersion": "1702.03", - "version": "oofBeijing", - "priority": "5", - "riskType": "test", - "riskLevel": "2", - "guard": "False", - "content": { - "identity": "minGuarantee_vGMuxInfra", - "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra"], - "minGuaranteeProperty": { - "cpu": {"value": "true", "operator": "="}, - "memory": {"value": "false", "operator": "="} - }, - "policyType": "minGuaraneePolicy", - "resourceInstanceType": ["vGMuxInfra"] - } -} diff --git a/test/policy-local-files/Placement_Optimization_1.json b/test/policy-local-files/Placement_Optimization_1.json index 5748c99..6d09b82 100644 --- a/test/policy-local-files/Placement_Optimization_1.json +++ b/test/policy-local-files/Placement_Optimization_1.json @@ -12,14 +12,14 @@ "objectiveParameter": { "parameterAttributes": [ { - "resource": ["vGMuxInfra"], + "resources": ["vGMuxInfra"], "customerLocationInfo": "customer_loc", "parameter": "distance", "weight": "1", "operator": "product" }, { - "resource": ["vG"], + "resources": ["vG"], "customerLocationInfo": "customer_loc", "parameter": "distance", "weight": "1", @@ -29,7 +29,7 @@ "operator": "sum" }, "identity": "optimization", - "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra", "vG"], + "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra", "vG", "placementOptimization"], "policyType": "placementOptimization", "objective": "minimize" } diff --git a/test/policy-local-files/QueryPolicy_vCPE.json b/test/policy-local-files/QueryPolicy_vCPE.json index 4ed83f9..03c457e 100644 --- a/test/policy-local-files/QueryPolicy_vCPE.json +++ b/test/policy-local-files/QueryPolicy_vCPE.json @@ -10,11 +10,14 @@ "guard": "False", "content": { "queryProperties": [ - {"attribute":"locationId", "value": "orderInfo.customerLocation"}, - {"attribute":"id", "value": "orderInfo.vpnInfo"}, - {"attribute":"upstreamBW", "value": "orderInfo.vpnInfo"} + {"attribute":"locationId", "attribute_location": "customerLocation", "value": ""}, + {"attribute":"id", "attribute_location": "vpnInfo.vpnId", "value": ""}, + {"attribute":"upstreamBW", "attribute_location": "vpnInfo.upstreamBW", "value": ""}, + {"attribute":"customerLatitude", "attribute_location": "customerLatitude", "value": 32.89748}, + {"attribute":"customerLongitude", "attribute_location": "customerLongitude", "value": -97.040443} ], - "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra", "vG"], - "type": "optimizationQueryPolicy" + "serviceName": "vCPE", + "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra", "vG", "optimizationQueryPolicy"], + "policyType": "optimizationQueryPolicy" } } diff --git a/test/policy-local-files/has_policies_r2/Affinity_vCPE_1.json b/test/policy-local-files/has_policies_r2/Affinity_vCPE_1.json deleted file mode 100644 index 9a9de6b..0000000 --- a/test/policy-local-files/has_policies_r2/Affinity_vCPE_1.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "service": "optimizationQueryPolicy", - "policyName": "oofBeijing.queryPolicy_vCPE", - "description": "Optimization query policy for vCPE", - "templateVersion": "0.0.1", - "version": "oofBeijing", - "priority": "3", - "riskType": "test", - "riskLevel": "2", - "guard": "False", - "content": { - "queryProperties": [ - { - "attribute": "locationId", - "value": "orderInfo.customerLocation" - }, - { - "attribute": "id", - "value": "orderInfo.vpnInfo" - }, - { - "attribute": "upstreamBW", - "value": "orderInfo.vpnInfo" - } - ], - "policyScope": [ - "vCPE", - "US", - "INTERNATIONAL", - "ip", - "vGMuxInfra", - "vG", - "optimizationQueryPolicy" - ], - "policyType": "optimizationQueryPolicy" - } -} diff --git a/test/policy-local-files/has_policies_r2/Capacity_vGMuxInfra.json b/test/policy-local-files/has_policies_r2/Capacity_vGMuxInfra.json deleted file mode 100644 index 06896c3..0000000 --- a/test/policy-local-files/has_policies_r2/Capacity_vGMuxInfra.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "service": "capacityPolicy", - "policyName": "oofBeijing.capacityPolicy_vGMuxInfra", - "description": "Capacity policy for vGMuxInfra", - "templateVersion": "1702.03", - "version": "oofBeijing", - "priority": "5", - "riskType": "test", - "riskLevel": "2", - "guard": "False", - "content": { - "identity": "capacity_vGMuxInfra", - "policyScope": ["VCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra", "vim_fit"], - "resources": ["vGMuxInfra"], - "capacityProperty": { - "controller": "multicloud", - "request": "{\"vCPU\": 10, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, \"unit\": \"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\", \"unit\": \"GB\"}}}" - }, - "policyType": "vim_fit", - "applicableResources": "any" - } -} diff --git a/test/policy-local-files/has_policies_r2/Capacity_vG_1.json b/test/policy-local-files/has_policies_r2/Capacity_vG_1.json deleted file mode 100644 index 851ea49..0000000 --- a/test/policy-local-files/has_policies_r2/Capacity_vG_1.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "service": "capacityPolicy", - "policyName": "oofBeijing.capacityPolicy_vG", - "description": "Capacity policy for vG", - "templateVersion": "1702.03", - "version": "oofBeijing", - "priority": "5", - "riskType": "test", - "riskLevel": "2", - "guard": "False", - "content": { - "identity": "capacity_vG", - "policyScope": ["VCPE", "US", "INTERNATIONAL", "ip", "vG", "vim_fit"], - "resources": ["vG"], - "capacityProperty": { - "controller": "multicloud", - "request": "{\"vCPU\": 10, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, \"unit\": \"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\", \"unit\": \"GB\"}}}" - }, - "policyType": "vim_fit", - "applicableResources": "any" - } -} diff --git a/test/policy-local-files/has_policies_r2/Distance_vGMuxInfra_1.json b/test/policy-local-files/has_policies_r2/Distance_vGMuxInfra_1.json deleted file mode 100644 index ee7d89e..0000000 --- a/test/policy-local-files/has_policies_r2/Distance_vGMuxInfra_1.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "service": "distancePolicy", - "policyName": "oofBeijing.distancePolicy_vGMuxInfra", - "description": "Distance Policy for vGMuxInfra", - "templateVersion": "0.0.1", - "version": "oofBeijing", - "priority": "3", - "riskType": "test", - "riskLevel": "2", - "guard": "False", - "content": { - "distanceProperties": { - "locationInfo": "customer_location", - "distance": { "value": "500", "operator": "<", "unit": "km" } - }, - "identity": "distance-vGMuxInfra", - "resources": ["vGMuxInfra"], - "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra", "distancePolicy"], - "policyType": "distancePolicy", - "applicableResources": "any" - } -} diff --git a/test/policy-local-files/has_policies_r2/Distance_vG_1.json b/test/policy-local-files/has_policies_r2/Distance_vG_1.json deleted file mode 100644 index 953dcc3..0000000 --- a/test/policy-local-files/has_policies_r2/Distance_vG_1.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "service": "distancePolicy", - "policyName": "oofBeijing.distancePolicy_vG", - "description": "Distance Policy for vG", - "templateVersion": "0.0.1", - "version": "oofBeijing", - "priority": "3", - "riskType": "test", - "riskLevel": "2", - "guard": "False", - "content": { - "distanceProperties": { - "locationInfo": "customer_location", - "distance": { "value": "1500", "operator": "<", "unit": "km" } - }, - "identity": "distance-vG", - "resources": ["vG"], - "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vG", "distancePolicy"], - "policyType": "distancePolicy", - "applicableResources": "any" - } -} diff --git a/test/policy-local-files/has_policies_r2/Min_Guarantee_vGMuxInfra_1.json b/test/policy-local-files/has_policies_r2/Min_Guarantee_vGMuxInfra_1.json deleted file mode 100644 index b8f958d..0000000 --- a/test/policy-local-files/has_policies_r2/Min_Guarantee_vGMuxInfra_1.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "service": "minGuaranteePolicy", - "policyName": "oofBeijing.minGuaranee_vGMuxInfra", - "description": "Min guarantee policy for vGMuxInfra", - "templateVersion": "1702.03", - "version": "oofBeijing", - "priority": "5", - "riskType": "test", - "riskLevel": "2", - "guard": "False", - "content": { - "identity": "minGuarantee_vGMuxInfra", - "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra", "minGuaranteePolicy"], - "minGuaranteeProperty": { - "cpu": "true", - "memory": "false", - }, - "policyType": "minGuaranteePolicy", - "resources": ["vGMuxInfra"], - "applicableResources": "any" - } -}
\ No newline at end of file diff --git a/test/policy-local-files/has_policies_r2/Placement_Optimization_1.json b/test/policy-local-files/has_policies_r2/Placement_Optimization_1.json deleted file mode 100644 index f8b0a6f..0000000 --- a/test/policy-local-files/has_policies_r2/Placement_Optimization_1.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "service": "PlacementOptimizationPolicy", - "policyName": "oofBeijing.PlacementOptimizationPolicy_vGMuxInfra", - "description": "Placement Optimization Policy for vGMuxInfra", - "templateVersion": "1702.03", - "version": "oofBeijing", - "priority": "5", - "riskType": "test", - "riskLevel": "3", - "guard": "False", - "content": { - "objectiveParameter": { - "parameterAttributes": [ - { - "resource": ["vGMuxInfra"], - "customerLocationInfo": "customer_loc", - "parameter": "distance", - "weight": "1", - "operator": "product" - }, - { - "resource": ["vG"], - "customerLocationInfo": "customer_loc", - "parameter": "distance", - "weight": "1", - "operator": "product" - } - ], - "operator": "sum" - }, - "identity": "optimization", - "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra", "vG", "placementOptimization"], - "policyType": "placementOptimization", - "objective": "minimize" - } -} diff --git a/test/policy-local-files/has_policies_r2/QueryPolicy_vCPE.json b/test/policy-local-files/has_policies_r2/QueryPolicy_vCPE.json deleted file mode 100644 index 508d7d6..0000000 --- a/test/policy-local-files/has_policies_r2/QueryPolicy_vCPE.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "service": "optimizationQueryPolicy", - "policyName": "oofBeijing.queryPolicy_vCPE", - "description": "Optimization query policy for vCPE", - "templateVersion": "0.0.1", - "version": "oofBeijing", - "priority": "3", - "riskType": "test", - "riskLevel": "2", - "guard": "False", - "content": { - "queryProperties": [ - {"attribute":"locationId", "attribute_location": "customerLocation", "value": ""}, - {"attribute":"id", "attribute_location": "vpnInfo.vpnId", "value": ""}, - {"attribute":"upstreamBW", "attribute_location": "vpnInfo.upstreamBW", "value": ""}, - {"attribute":"customerLatitude", "attribute_location": "customerLatitude", "value": 32.89748}, - {"attribute":"customerLongitude", "attribute_location": "customerLongitude", "value": -97.040443} - ], - "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra", "vG", "optimizationQueryPolicy"], - "policyType": "optimizationQueryPolicy" - } -} diff --git a/test/policy-local-files/has_policies_r2/hpa_policy_vGMuxInfra_1.json b/test/policy-local-files/has_policies_r2/hpa_policy_vGMuxInfra_1.json deleted file mode 100644 index 7b68578..0000000 --- a/test/policy-local-files/has_policies_r2/hpa_policy_vGMuxInfra_1.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "service": "hpaPolicy", - "policyName": "oofBeijing.hpaPolicy_vGMuxInfra", - "description": "HPA policy for vGMuxInfra", - "templateVersion": "0.0.1", - "version": "1.0", - "priority": "3", - "riskType": "test", - "riskLevel": "2", - "guard": "False", - "content": { - "resources": "vGMuxInfra", - "identity": "hpaPolicy_vGMuxInfra", - "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra", "hpaPolicy"], - "policyType": "hpaPolicy", - "flavorFeatures": [ - { - "flavorLabel": "flavor_label_vm_01", - "flavorProperties":[ - { - "hpa-feature" : "cpuTopology", - "mandatory" : "True", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key":"numCpuSockets", "hpa-attribute-value": "2","operator": ">=", "unit": ""}, - {"hpa-attribute-key":"numCpuSockets", "hpa-attribute-value": "4","operator": "<=", "unit": ""}, - {"hpa-attribute-key":"numCpuCores", "hpa-attribute-value": "2", "operator":">=", "unit": ""}, - {"hpa-attribute-key":"numCpuCores", "hpa-attribute-value": "4", "operator":"<=", "unit": ""}, - {"hpa-attribute-key":"numCpuThreads", "hpa-attribute-value": "4", "operator":">=", "unit": ""}, - {"hpa-attribute-key":"numCpuThreads", "hpa-attribute-value": "8", "operator":"<=", "unit": ""} - ] - }, - { - "hpa-feature" : "basicCapabilities", - "mandatory" : "True", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "virtualMemSize", "hpa-attribute-value":"6", "operator": "=", "unit": "GB"} - ] - }, - { - "hpa-feature" : "ovsDpdk", - "mandatory" : "False", - "score" : "3", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key":"dataProcessingAccelerationLibrary", "hpa-attribute-value":"ovsDpdk_version", "operator": "=", "unit":""} - ] - }, - { - "hpa-feature" : "cpuInstructionSetExtensions", - "mandatory" : "True", - "architecture": "INTEL-64", - "hpa-feature-attributes": [ - {"hpa-attribute-key":"instructionSetExtensions", "hpa-attribute-value":["<CPUINST>", "<CPUINST>"], "operator": "ALL", "unit":""} - ] - } - ] - }, - { - "flavorLabel": "flavor_label_vm_02", - "flavorProperties":[ - { - "hpa-feature" : "cpuPinningy", - "mandatory" : "True", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key":"logicalCpuThreadPinningPolicy", "hpa-attribute-value":"<CPUTHREADPOLICY>", "operator": "=", "unit":""}, - {"hpa-attribute-key":"logicalCpuPinningPolicy", "hpa-attribute-value": "<CPUPOLICY>","operator": "=", "unit":""} - ] - }, - { - "hpa-feature" : "basicCapabilities", - "mandatory" : "True", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "virtualMemSize", "hpa-attribute-value":"6", "operator": "=", "unit": "GB"} - ] - }, - { - "hpa-feature" : "localStorage", - "mandatory" : "False", - "score" : "5", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key": "diskSize", "hpa-attribute-value": "2", "operator": "=", "unit": "GB"}, - {"hpa-attribute-key": "ephemeralDiskSize", "hpa-attribute-value": "2", "operator": "=", "unit": "GB"}, - {"hpa-attribute-key": "swapMemSize", "hpa-attribute-value":"16", "operator": "=", "unit": "MB"} - ] - }, - { - "hpa-feature" : "pcie", - "mandatory" : "True", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key": "pciCount", "hpa-attribute-value": "2", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "pciVendorId", "hpa-attribute-value":"8086", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "pciDeviceId", "hpa-attribute-value": "2", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "functionType", "hpa-attribute-value": "<PCITYPEVALUE>","operator": "=", "unit": ""} - ] - } - ] - }, - { - "flavorLabel": "flavor_label_vm_03", - "flavorProperties":[ - { - "hpa-feature" : "numa", - "mandatory" : "False", - "score" : "5", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key": "numaNodes", "hpa-attribute-value": "2", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "numaCpu-0", "hpa-attribute-value":"2", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "numaMem-0", "hpa-attribute-value": "2048", "operator": "=", "unit": "MB"}, - {"hpa-attribute-key": "numaCpu-1", "hpa-attribute-value":"4", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "numaMem-1", "value": "4096", "operator": "=", "unit": "MB"} - ] - }, - { - "hpa-feature" : "basicCapabilities", - "mandatory" : "True", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "virtualMemSize", "hpa-attribute-value":"6", "operator": "=", "unit": "GB"} - ] - }, - { - "hpa-feature" : "hugePages", - "mandatory" : "False", - "score" : "7", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key": "memoryPageSize", "hpa-attribute-value": "<MEMORYPAGESIZE>", "operator": "=", "unit": ""} - ] - } - ] - } - ] - } -} diff --git a/test/policy-local-files/has_policies_r2/hpa_policy_vG_1.json b/test/policy-local-files/has_policies_r2/hpa_policy_vG_1.json deleted file mode 100644 index 95f9247..0000000 --- a/test/policy-local-files/has_policies_r2/hpa_policy_vG_1.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "service": "hpaPolicy", - "policyName": "oofBeijing.hpaPolicy_vG", - "description": "HPA policy for vG", - "templateVersion": "0.0.1", - "version": "1.0", - "priority": "3", - "riskType": "test", - "riskLevel": "2", - "guard": "False", - "content": { - "resources": "vG", - "identity": "hpaPolicy_vG", - "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vG", "hpaPolicy"], - "policyType": "hpaPolicy", - "flavorFeatures": [ - { - "flavorLabel": "flavor_label_vm_01", - "flavorProperties":[ - { - "hpa-feature" : "cpuTopology", - "mandatory" : "True", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key":"numCpuSockets", "hpa-attribute-value": "2","operator": ">=", "unit": ""}, - {"hpa-attribute-key":"numCpuSockets", "hpa-attribute-value": "4","operator": "<=", "unit": ""}, - {"hpa-attribute-key":"numCpuCores", "hpa-attribute-value": "2", "operator":">=", "unit": ""}, - {"hpa-attribute-key":"numCpuCores", "hpa-attribute-value": "4", "operator":"<=", "unit": ""}, - {"hpa-attribute-key":"numCpuThreads", "hpa-attribute-value": "4", "operator":">=", "unit": ""}, - {"hpa-attribute-key":"numCpuThreads", "hpa-attribute-value": "8", "operator":"<=", "unit": ""} - ] - }, - { - "hpa-feature" : "basicCapabilities", - "mandatory" : "True", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "virtualMemSize", "hpa-attribute-value":"6", "operator": "=", "unit": "GB"} - ] - }, - { - "hpa-feature" : "ovsDpdk", - "mandatory" : "False", - "score" : "3", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key":"dataProcessingAccelerationLibrary", "hpa-attribute-value":"ovsDpdk_version", "operator": "=", "unit":""} - ] - }, - { - "hpa-feature" : "cpuInstructionSetExtensions", - "mandatory" : "True", - "architecture": "INTEL-64", - "hpa-feature-attributes": [ - {"hpa-attribute-key":"instructionSetExtensions", "hpa-attribute-value":["<CPUINST>", "<CPUINST>"], "operator": "ALL", "unit":""} - ] - } - ] - }, - { - "flavorLabel": "flavor_label_vm_02", - "flavorProperties":[ - { - "hpa-feature" : "cpuPinningy", - "mandatory" : "True", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key":"logicalCpuThreadPinningPolicy", "hpa-attribute-value":"<CPUTHREADPOLICY>", "operator": "=", "unit":""}, - {"hpa-attribute-key":"logicalCpuPinningPolicy", "hpa-attribute-value": "<CPUPOLICY>","operator": "=", "unit":""} - ] - }, - { - "hpa-feature" : "basicCapabilities", - "mandatory" : "True", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "virtualMemSize", "hpa-attribute-value":"6", "operator": "=", "unit": "GB"} - ] - }, - { - "hpa-feature" : "localStorage", - "mandatory" : "False", - "score" : "5", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key": "diskSize", "hpa-attribute-value": "2", "operator": "=", "unit": "GB"}, - {"hpa-attribute-key": "ephemeralDiskSize", "hpa-attribute-value": "2", "operator": "=", "unit": "GB"}, - {"hpa-attribute-key": "swapMemSize", "hpa-attribute-value":"16", "operator": "=", "unit": "MB"} - ] - }, - { - "hpa-feature" : "pcie", - "mandatory" : "True", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key": "pciCount", "hpa-attribute-value": "2", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "pciVendorId", "hpa-attribute-value":"8086", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "pciDeviceId", "hpa-attribute-value": "2", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "functionType", "hpa-attribute-value": "<PCITYPEVALUE>","operator": "=", "unit": ""} - ] - } - ] - }, - { - "flavorLabel": "flavor_label_vm_03", - "flavorProperties":[ - { - "hpa-feature" : "numa", - "mandatory" : "False", - "score" : "5", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key": "numaNodes", "hpa-attribute-value": "2", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "numaCpu-0", "hpa-attribute-value":"2", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "numaMem-0", "hpa-attribute-value": "2048", "operator": "=", "unit": "MB"}, - {"hpa-attribute-key": "numaCpu-1", "hpa-attribute-value":"4", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "numaMem-1", "value": "4096", "operator": "=", "unit": "MB"} - ] - }, - { - "hpa-feature" : "basicCapabilities", - "mandatory" : "True", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": ""}, - {"hpa-attribute-key": "virtualMemSize", "hpa-attribute-value":"6", "operator": "=", "unit": "GB"} - ] - }, - { - "hpa-feature" : "hugePages", - "mandatory" : "False", - "score" : "7", - "architecture": "generic", - "hpa-feature-attributes": [ - {"hpa-attribute-key": "memoryPageSize", "hpa-attribute-value": "<MEMORYPAGESIZE>", "operator": "=", "unit": ""} - ] - } - ] - } - ] - } -} diff --git a/test/policy-local-files/has_policies_r2/vnfPolicy_vG.json b/test/policy-local-files/has_policies_r2/vnfPolicy_vG.json deleted file mode 100644 index a5694a3..0000000 --- a/test/policy-local-files/has_policies_r2/vnfPolicy_vG.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "service": "VnfPolicy", - "policyName": "oofBeijing.vnfPolicy_vG", - "description": "vnfPolicy", - "templateVersion": "1702.03", - "version": "oofBeijing", - "priority": "6", - "riskType": "test", - "riskLevel": "3", - "guard": "False", - "content": { - "identity": "vnf_vG", - "policyScope": ["vCPE", "INTERNATIONAL", "ip", "vG", "vnf_policy"], - "policyType": "vnf_policy", - "resources": ["vG"], - "applicableResources": "any", - "vnfProperties": [ - { - "inventoryProvider": "aai", - "serviceType": "", - "inventoryType": "cloud", - "customerId": "" - }, - { - "inventoryProvider": "multicloud", - "serviceType": "HNGATEWAY", - "inventoryType": "service", - "customerId": "21014aa2-526b-11e6-beb8-9e71128cae77" - } - ] - } -} diff --git a/test/policy-local-files/has_policies_r2/vnfPolicy_vGMuxInfra.json b/test/policy-local-files/has_policies_r2/vnfPolicy_vGMuxInfra.json deleted file mode 100644 index 682fb62..0000000 --- a/test/policy-local-files/has_policies_r2/vnfPolicy_vGMuxInfra.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "service": "VnfPolicy", - "policyName": "oofBeijing.vnfPolicy_vGMuxInfra", - "description": "vnfPolicy", - "templateVersion": "1702.03", - "version": "oofBeijing", - "priority": "6", - "riskType": "test", - "riskLevel": "3", - "guard": "False", - "content": { - "identity": "vnf_vGMuxInfra", - "policyScope": ["vCPE", "INTERNATIONAL", "ip", "vGMuxInfra", "vnf_policy"], - "policyType": "vnf_policy", - "resources": ["vGMuxInfra"], - "applicableResources": "any", - "vnfProperties": [ - { - "inventoryProvider": "aai", - "serviceType": "", - "inventoryType": "cloud", - "customerId": "" - }, - { - "inventoryProvider": "multicloud", - "serviceType": "HNGATEWAY", - "inventoryType": "service", - "customerId": "21014aa2-526b-11e6-beb8-9e71128cae77" - } - ] - } -} diff --git a/test/policy-local-files/hpa_policy_vGMuxInfra_1.json b/test/policy-local-files/hpa_policy_vGMuxInfra_1.json index bf09532..7b68578 100644 --- a/test/policy-local-files/hpa_policy_vGMuxInfra_1.json +++ b/test/policy-local-files/hpa_policy_vGMuxInfra_1.json @@ -11,49 +11,49 @@ "content": { "resources": "vGMuxInfra", "identity": "hpaPolicy_vGMuxInfra", - "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra"], + "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vGMuxInfra", "hpaPolicy"], "policyType": "hpaPolicy", "flavorFeatures": [ { "flavorLabel": "flavor_label_vm_01", "flavorProperties":[ { - "hpa_feature" : "cpuTopology", + "hpa-feature" : "cpuTopology", "mandatory" : "True", "architecture": "generic", - "featureAttributes": [ - {"attribute":"numCpuSockets", "values": "2","operator": ">=", "unit": ""}, - {"attribute":"numCpuSockets", "values": "4","operator": "<=", "unit": ""}, - {"attribute":"numCpuCores", "value": "2", "operator":">=", "unit": ""}, - {"attribute":"numCpuCores", "value": "4", "operator":"<=", "unit": ""}, - {"attribute":"numCpuThreads", "value": "4", "operator":">=", "unit": ""}, - {"attribute":"numCpuThreads", "value": "8", "operator":"<=", "unit": ""} + "hpa-feature-attributes": [ + {"hpa-attribute-key":"numCpuSockets", "hpa-attribute-value": "2","operator": ">=", "unit": ""}, + {"hpa-attribute-key":"numCpuSockets", "hpa-attribute-value": "4","operator": "<=", "unit": ""}, + {"hpa-attribute-key":"numCpuCores", "hpa-attribute-value": "2", "operator":">=", "unit": ""}, + {"hpa-attribute-key":"numCpuCores", "hpa-attribute-value": "4", "operator":"<=", "unit": ""}, + {"hpa-attribute-key":"numCpuThreads", "hpa-attribute-value": "4", "operator":">=", "unit": ""}, + {"hpa-attribute-key":"numCpuThreads", "hpa-attribute-value": "8", "operator":"<=", "unit": ""} ] }, { - "hpa_feature" : "basicCapabilities", + "hpa-feature" : "basicCapabilities", "mandatory" : "True", "architecture": "generic", - "featureAttributes": [ - {"attribute": "numVirtualCpu", "value": "6", "operator": "=", "unit": ""}, - {"attribute": "virtualMemSize", "value":"6", "operator": "=", "unit": "GB"} + "hpa-feature-attributes": [ + {"hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "virtualMemSize", "hpa-attribute-value":"6", "operator": "=", "unit": "GB"} ] }, { - "hpa_feature" : "ovsDpdk", + "hpa-feature" : "ovsDpdk", "mandatory" : "False", "score" : "3", "architecture": "generic", - "featureAttributes": [ - {"attribute":"dataProcessingAccelerationLibrary", "value":"ovsDpdk_version", "operator": "=", "unit":""} + "hpa-feature-attributes": [ + {"hpa-attribute-key":"dataProcessingAccelerationLibrary", "hpa-attribute-value":"ovsDpdk_version", "operator": "=", "unit":""} ] }, { - "hpa_feature" : "cpuInstructionSetExtensions", + "hpa-feature" : "cpuInstructionSetExtensions", "mandatory" : "True", "architecture": "INTEL-64", - "featureAttributes": [ - {"attribute":"instructionSetExtensions", "value":["<CPUINST>", "<CPUINST>"], "operator": "ALL", "unit":""} + "hpa-feature-attributes": [ + {"hpa-attribute-key":"instructionSetExtensions", "hpa-attribute-value":["<CPUINST>", "<CPUINST>"], "operator": "ALL", "unit":""} ] } ] @@ -62,43 +62,43 @@ "flavorLabel": "flavor_label_vm_02", "flavorProperties":[ { - "hpa_feature" : "cpuPinningy", + "hpa-feature" : "cpuPinningy", "mandatory" : "True", "architecture": "generic", - "featureAttributes": [ - {"attribute":"logicalCpuThreadPinningPolicy", "value":"<CPUTHREADPOLICY>", "operator": "=", "unit":""}, - {"attribute":"logicalCpuPinningPolicy", "value": "<CPUPOLICY>","operator": "=", "unit":""} + "hpa-feature-attributes": [ + {"hpa-attribute-key":"logicalCpuThreadPinningPolicy", "hpa-attribute-value":"<CPUTHREADPOLICY>", "operator": "=", "unit":""}, + {"hpa-attribute-key":"logicalCpuPinningPolicy", "hpa-attribute-value": "<CPUPOLICY>","operator": "=", "unit":""} ] }, { - "hpa_feature" : "basicCapabilities", + "hpa-feature" : "basicCapabilities", "mandatory" : "True", "architecture": "generic", - "featureAttributes": [ - {"attribute": "numVirtualCpu", "value": "6", "operator": "=", "unit": ""}, - {"attribute": "virtualMemSize", "value":"6", "operator": "=", "unit": "GB"} + "hpa-feature-attributes": [ + {"hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "virtualMemSize", "hpa-attribute-value":"6", "operator": "=", "unit": "GB"} ] }, { - "hpa_feature" : "localStorage", + "hpa-feature" : "localStorage", "mandatory" : "False", "score" : "5", "architecture": "generic", - "featureAttributes": [ - {"attribute": "diskSize", "value": "2", "operator": "=", "unit": "GB"}, - {"attribute": "ephemeralDiskSize", "value": "2", "operator": "=", "unit": "GB"}, - {"attribute": "swapMemSize", "value":"16", "operator": "=", "unit": "MB"} + "hpa-feature-attributes": [ + {"hpa-attribute-key": "diskSize", "hpa-attribute-value": "2", "operator": "=", "unit": "GB"}, + {"hpa-attribute-key": "ephemeralDiskSize", "hpa-attribute-value": "2", "operator": "=", "unit": "GB"}, + {"hpa-attribute-key": "swapMemSize", "hpa-attribute-value":"16", "operator": "=", "unit": "MB"} ] }, { - "hpa_feature" : "pcie", + "hpa-feature" : "pcie", "mandatory" : "True", "architecture": "generic", - "featureAttributes": [ - {"attribute": "pciCount", "value": "2", "operator": "=", "unit": ""}, - {"attribute": "pciVendorId", "value":"8086", "operator": "=", "unit": ""}, - {"attribute": "pciDeviceId", "value": "2", "operator": "=", "unit": ""}, - {"attribute": "functionType", "value": "<PCITYPEVALUE>","operator": "=", "unit": ""} + "hpa-feature-attributes": [ + {"hpa-attribute-key": "pciCount", "hpa-attribute-value": "2", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "pciVendorId", "hpa-attribute-value":"8086", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "pciDeviceId", "hpa-attribute-value": "2", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "functionType", "hpa-attribute-value": "<PCITYPEVALUE>","operator": "=", "unit": ""} ] } ] @@ -107,34 +107,34 @@ "flavorLabel": "flavor_label_vm_03", "flavorProperties":[ { - "hpa_feature" : "numa", + "hpa-feature" : "numa", "mandatory" : "False", "score" : "5", "architecture": "generic", - "featureAttributes": [ - {"attribute": "numaNodes", "value": "2", "operator": "=", "unit": ""}, - {"attribute": "numaCpu-0", "values":"2", "operator": "=", "unit": ""}, - {"attribute": "numaMem-0", "value": "2048", "operator": "=", "unit": "MB"}, - {"attribute": "numaCpu-1", "values":"4", "operator": "=", "unit": ""}, - {"attribute": "numaMem-1", "value": "4096", "operator": "=", "unit": "MB"} + "hpa-feature-attributes": [ + {"hpa-attribute-key": "numaNodes", "hpa-attribute-value": "2", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "numaCpu-0", "hpa-attribute-value":"2", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "numaMem-0", "hpa-attribute-value": "2048", "operator": "=", "unit": "MB"}, + {"hpa-attribute-key": "numaCpu-1", "hpa-attribute-value":"4", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "numaMem-1", "value": "4096", "operator": "=", "unit": "MB"} ] }, { - "hpa_feature" : "basicCapabilities", + "hpa-feature" : "basicCapabilities", "mandatory" : "True", "architecture": "generic", - "featureAttributes": [ - {"attribute": "numVirtualCpu", "value": "6", "operator": "=", "unit": ""}, - {"attribute": "virtualMemSize", "value":"6", "operator": "=", "unit": "GB"} + "hpa-feature-attributes": [ + {"hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "virtualMemSize", "hpa-attribute-value":"6", "operator": "=", "unit": "GB"} ] }, { - "hpa_feature" : "hugePages", + "hpa-feature" : "hugePages", "mandatory" : "False", "score" : "7", "architecture": "generic", - "featureAttributes": [ - {"attribute": "memoryPageSize", "value": "<MEMORYPAGESIZE>", "operator": "=", "unit": ""} + "hpa-feature-attributes": [ + {"hpa-attribute-key": "memoryPageSize", "hpa-attribute-value": "<MEMORYPAGESIZE>", "operator": "=", "unit": ""} ] } ] diff --git a/test/policy-local-files/hpa_policy_vG_1.json b/test/policy-local-files/hpa_policy_vG_1.json index 98d8cea..95f9247 100644 --- a/test/policy-local-files/hpa_policy_vG_1.json +++ b/test/policy-local-files/hpa_policy_vG_1.json @@ -11,49 +11,49 @@ "content": { "resources": "vG", "identity": "hpaPolicy_vG", - "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vG"], + "policyScope": ["vCPE", "US", "INTERNATIONAL", "ip", "vG", "hpaPolicy"], "policyType": "hpaPolicy", "flavorFeatures": [ { "flavorLabel": "flavor_label_vm_01", "flavorProperties":[ { - "hpa_feature" : "cpuTopology", + "hpa-feature" : "cpuTopology", "mandatory" : "True", "architecture": "generic", - "featureAttributes": [ - {"attribute":"numCpuSockets", "values": "2","operator": ">=", "unit": ""}, - {"attribute":"numCpuSockets", "values": "4","operator": "<=", "unit": ""}, - {"attribute":"numCpuCores", "value": "2", "operator":">=", "unit": ""}, - {"attribute":"numCpuCores", "value": "4", "operator":"<=", "unit": ""}, - {"attribute":"numCpuThreads", "value": "4", "operator":">=", "unit": ""}, - {"attribute":"numCpuThreads", "value": "8", "operator":"<=", "unit": ""} + "hpa-feature-attributes": [ + {"hpa-attribute-key":"numCpuSockets", "hpa-attribute-value": "2","operator": ">=", "unit": ""}, + {"hpa-attribute-key":"numCpuSockets", "hpa-attribute-value": "4","operator": "<=", "unit": ""}, + {"hpa-attribute-key":"numCpuCores", "hpa-attribute-value": "2", "operator":">=", "unit": ""}, + {"hpa-attribute-key":"numCpuCores", "hpa-attribute-value": "4", "operator":"<=", "unit": ""}, + {"hpa-attribute-key":"numCpuThreads", "hpa-attribute-value": "4", "operator":">=", "unit": ""}, + {"hpa-attribute-key":"numCpuThreads", "hpa-attribute-value": "8", "operator":"<=", "unit": ""} ] }, { - "hpa_feature" : "basicCapabilities", + "hpa-feature" : "basicCapabilities", "mandatory" : "True", "architecture": "generic", - "featureAttributes": [ - {"attribute": "numVirtualCpu", "value": "6", "operator": "=", "unit": ""}, - {"attribute": "virtualMemSize", "value":"6", "operator": "=", "unit": "GB"} + "hpa-feature-attributes": [ + {"hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "virtualMemSize", "hpa-attribute-value":"6", "operator": "=", "unit": "GB"} ] }, { - "hpa_feature" : "ovsDpdk", + "hpa-feature" : "ovsDpdk", "mandatory" : "False", "score" : "3", "architecture": "generic", - "featureAttributes": [ - {"attribute":"dataProcessingAccelerationLibrary", "value":"ovsDpdk_version", "operator": "=", "unit":""} + "hpa-feature-attributes": [ + {"hpa-attribute-key":"dataProcessingAccelerationLibrary", "hpa-attribute-value":"ovsDpdk_version", "operator": "=", "unit":""} ] }, { - "hpa_feature" : "cpuInstructionSetExtensions", + "hpa-feature" : "cpuInstructionSetExtensions", "mandatory" : "True", "architecture": "INTEL-64", - "featureAttributes": [ - {"attribute":"instructionSetExtensions", "value":["<CPUINST>", "<CPUINST>"], "operator": "ALL", "unit":""} + "hpa-feature-attributes": [ + {"hpa-attribute-key":"instructionSetExtensions", "hpa-attribute-value":["<CPUINST>", "<CPUINST>"], "operator": "ALL", "unit":""} ] } ] @@ -62,43 +62,43 @@ "flavorLabel": "flavor_label_vm_02", "flavorProperties":[ { - "hpa_feature" : "cpuPinningy", + "hpa-feature" : "cpuPinningy", "mandatory" : "True", "architecture": "generic", - "featureAttributes": [ - {"attribute":"logicalCpuThreadPinningPolicy", "value":"<CPUTHREADPOLICY>", "operator": "=", "unit":""}, - {"attribute":"logicalCpuPinningPolicy", "value": "<CPUPOLICY>","operator": "=", "unit":""} + "hpa-feature-attributes": [ + {"hpa-attribute-key":"logicalCpuThreadPinningPolicy", "hpa-attribute-value":"<CPUTHREADPOLICY>", "operator": "=", "unit":""}, + {"hpa-attribute-key":"logicalCpuPinningPolicy", "hpa-attribute-value": "<CPUPOLICY>","operator": "=", "unit":""} ] }, { - "hpa_feature" : "basicCapabilities", + "hpa-feature" : "basicCapabilities", "mandatory" : "True", "architecture": "generic", - "featureAttributes": [ - {"attribute": "numVirtualCpu", "value": "6", "operator": "=", "unit": ""}, - {"attribute": "virtualMemSize", "value":"6", "operator": "=", "unit": "GB"} + "hpa-feature-attributes": [ + {"hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "virtualMemSize", "hpa-attribute-value":"6", "operator": "=", "unit": "GB"} ] }, { - "hpa_feature" : "localStorage", + "hpa-feature" : "localStorage", "mandatory" : "False", "score" : "5", "architecture": "generic", - "featureAttributes": [ - {"attribute": "diskSize", "value": "2", "operator": "=", "unit": "GB"}, - {"attribute": "ephemeralDiskSize", "value": "2", "operator": "=", "unit": "GB"}, - {"attribute": "swapMemSize", "value":"16", "operator": "=", "unit": "MB"} + "hpa-feature-attributes": [ + {"hpa-attribute-key": "diskSize", "hpa-attribute-value": "2", "operator": "=", "unit": "GB"}, + {"hpa-attribute-key": "ephemeralDiskSize", "hpa-attribute-value": "2", "operator": "=", "unit": "GB"}, + {"hpa-attribute-key": "swapMemSize", "hpa-attribute-value":"16", "operator": "=", "unit": "MB"} ] }, { - "hpa_feature" : "pcie", + "hpa-feature" : "pcie", "mandatory" : "True", "architecture": "generic", - "featureAttributes": [ - {"attribute": "pciCount", "value": "2", "operator": "=", "unit": ""}, - {"attribute": "pciVendorId", "value":"8086", "operator": "=", "unit": ""}, - {"attribute": "pciDeviceId", "value": "2", "operator": "=", "unit": ""}, - {"attribute": "functionType", "value": "<PCITYPEVALUE>","operator": "=", "unit": ""} + "hpa-feature-attributes": [ + {"hpa-attribute-key": "pciCount", "hpa-attribute-value": "2", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "pciVendorId", "hpa-attribute-value":"8086", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "pciDeviceId", "hpa-attribute-value": "2", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "functionType", "hpa-attribute-value": "<PCITYPEVALUE>","operator": "=", "unit": ""} ] } ] @@ -107,34 +107,34 @@ "flavorLabel": "flavor_label_vm_03", "flavorProperties":[ { - "hpa_feature" : "numa", + "hpa-feature" : "numa", "mandatory" : "False", "score" : "5", "architecture": "generic", - "featureAttributes": [ - {"attribute": "numaNodes", "value": "2", "operator": "=", "unit": ""}, - {"attribute": "numaCpu-0", "values":"2", "operator": "=", "unit": ""}, - {"attribute": "numaMem-0", "value": "2048", "operator": "=", "unit": "MB"}, - {"attribute": "numaCpu-1", "values":"4", "operator": "=", "unit": ""}, - {"attribute": "numaMem-1", "value": "4096", "operator": "=", "unit": "MB"} + "hpa-feature-attributes": [ + {"hpa-attribute-key": "numaNodes", "hpa-attribute-value": "2", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "numaCpu-0", "hpa-attribute-value":"2", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "numaMem-0", "hpa-attribute-value": "2048", "operator": "=", "unit": "MB"}, + {"hpa-attribute-key": "numaCpu-1", "hpa-attribute-value":"4", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "numaMem-1", "value": "4096", "operator": "=", "unit": "MB"} ] }, { - "hpa_feature" : "basicCapabilities", + "hpa-feature" : "basicCapabilities", "mandatory" : "True", "architecture": "generic", - "featureAttributes": [ - {"attribute": "numVirtualCpu", "value": "6", "operator": "=", "unit": ""}, - {"attribute": "virtualMemSize", "value":"6", "operator": "=", "unit": "GB"} + "hpa-feature-attributes": [ + {"hpa-attribute-key": "numVirtualCpu", "hpa-attribute-value": "6", "operator": "=", "unit": ""}, + {"hpa-attribute-key": "virtualMemSize", "hpa-attribute-value":"6", "operator": "=", "unit": "GB"} ] }, { - "hpa_feature" : "hugePages", + "hpa-feature" : "hugePages", "mandatory" : "False", "score" : "7", "architecture": "generic", - "featureAttributes": [ - {"attribute": "memoryPageSize", "value": "<MEMORYPAGESIZE>", "operator": "=", "unit": ""} + "hpa-feature-attributes": [ + {"hpa-attribute-key": "memoryPageSize", "hpa-attribute-value": "<MEMORYPAGESIZE>", "operator": "=", "unit": ""} ] } ] diff --git a/test/policy-local-files/meta-valid-policies.txt b/test/policy-local-files/meta-valid-policies.txt index a0ce3fe..7fc72ea 100644 --- a/test/policy-local-files/meta-valid-policies.txt +++ b/test/policy-local-files/meta-valid-policies.txt @@ -3,7 +3,6 @@ Capacity_vGMuxInfra.json Capacity_vG_1.json Distance_vGMuxInfra_1.json Distance_vG_1.json -Min_Guarantee_vGMuxInfra_1.json Placement_Optimization_1.json QueryPolicy_vCPE.json hpa_policy_vGMuxInfra_1.json diff --git a/test/policy-local-files/has_policies_r2/subscriber_policy.json b/test/policy-local-files/subscriber_policy.json index f237f79..f1b818c 100644 --- a/test/policy-local-files/has_policies_r2/subscriber_policy.json +++ b/test/policy-local-files/subscriber_policy.json @@ -16,6 +16,7 @@ "subscriberRole": ["PVT Homing"], "provStatus": ["CAPPED"] }, - "policyType": "subscriberPolicy" + "policyType": "subscriberPolicy", + "serviceName": "vCPE" } }
\ No newline at end of file diff --git a/test/policy-local-files/vnfPolicy_vG.json b/test/policy-local-files/vnfPolicy_vG.json index ead038c..c77cdc7 100644 --- a/test/policy-local-files/vnfPolicy_vG.json +++ b/test/policy-local-files/vnfPolicy_vG.json @@ -10,10 +10,11 @@ "guard": "False", "content": { "identity": "vnf_vG", - "policyScope": ["vCPE", "INTERNATIONAL", "ip", "vG"], - "policyType": "vnf_policy", + "policyScope": ["vCPE", "INTERNATIONAL", "ip", "vG", "vnf_policy"], + "policyType": "vnfPolicy", "resources": ["vG"], - "vnfProperties": [ + "applicableResources": "any", + "vnfProperties": [ { "inventoryProvider": "aai", "serviceType": "", diff --git a/test/policy-local-files/vnfPolicy_vGMuxInfra.json b/test/policy-local-files/vnfPolicy_vGMuxInfra.json index 787563b..3971519 100644 --- a/test/policy-local-files/vnfPolicy_vGMuxInfra.json +++ b/test/policy-local-files/vnfPolicy_vGMuxInfra.json @@ -10,9 +10,10 @@ "guard": "False", "content": { "identity": "vnf_vGMuxInfra", - "policyScope": ["vCPE", "INTERNATIONAL", "ip", "vGMuxInfra"], - "policyType": "vnf_policy", + "policyScope": ["vCPE", "INTERNATIONAL", "ip", "vGMuxInfra", "vnf_policy"], + "policyType": "vnfPolicy", "resources": ["vGMuxInfra"], + "applicableResources": "any", "vnfProperties": [ { "inventoryProvider": "aai", diff --git a/test/policy/test_policy_interface.py b/test/policy/test_policy_interface.py index 5dc75c3..4f1efcf 100644 --- a/test/policy/test_policy_interface.py +++ b/test/policy/test_policy_interface.py @@ -51,10 +51,6 @@ class TestPolicyInterface(unittest.TestCase): def tearDown(self): pass - def test_gen_demands(self): - res = tr.gen_demands(self.request_json, self.policies) - assert res is not None - def test_get_by_name(self): pol.get_by_name(mock.MagicMock(), self.valid_policies_files[0]) diff --git a/test/test_ConductorApiBuilder.py b/test/test_ConductorApiBuilder.py index 8395a47..d13a6a5 100644 --- a/test/test_ConductorApiBuilder.py +++ b/test/test_ConductorApiBuilder.py @@ -29,8 +29,8 @@ class TestConductorApiBuilder(unittest.TestCase): def setUp(self): self.main_dir = "" conductor_api_template = self.main_dir + "osdf/templates/conductor_interface.json" - parameter_data_file = self.main_dir + "test/placement-tests/request.json" - policy_data_path = self.main_dir + "test/policy-local-files/" + parameter_data_file = self.main_dir + "test/placement-tests/request.json" # "test/placement-tests/request.json" + policy_data_path = self.main_dir + "test/policy-local-files" # "test/policy-local-files" local_config_file = self.main_dir + "config/common_config.yaml" valid_policies_list_file = policy_data_path + '/' + 'meta-valid-policies.txt' @@ -42,12 +42,12 @@ class TestConductorApiBuilder(unittest.TestCase): def test_conductor_api_call_builder(self): main_dir = self.main_dir - conductor_api_template = main_dir + "osdf/templates/conductor_interface.json" + conductor_api_template = main_dir + "osdf/templates/conductor_interface.json" # "osdf/templates/conductor_interface.json" local_config_file = main_dir + "config/common_config.yaml" request_json = self.request_json policies = self.policies local_config = yaml.load(open(local_config_file)) - templ_string = conductor_api_builder(request_json, policies, local_config, [], conductor_api_template) + templ_string = conductor_api_builder(request_json, policies, local_config, conductor_api_template) templ_json = json.loads(templ_string) self.assertEqual(templ_json["name"], "yyy-yyy-yyyy") diff --git a/test/test_PolicyCalls.py b/test/test_PolicyCalls.py index 8c0d638..30fc072 100644 --- a/test/test_PolicyCalls.py +++ b/test/test_PolicyCalls.py @@ -80,7 +80,7 @@ class TestPolicyCalls(unittest.TestCase): with patch('osdf.adapters.policy.interface.policy_api_call', return_value=policy_response): self.assertRaises(BusinessException, lambda: interface.remote_api(req_json, osdf_config, service_type="placement")) - + def test_get_by_scope(self): req_json_file = "./test/placement-tests/testScoperequest.json" all_policies = "./test/placement-tests/policy_response.json" @@ -100,7 +100,9 @@ class TestPolicyCalls(unittest.TestCase): genDemandslist = [] req_json = "./test/placement-tests/request.json" req_json = json.loads(open(req_json).read()) - genDemands = translation.gen_demands(req_json, self.policies) + # need to run this only on vnf policies + vnf_policies = [x for x in self.policies if x["content"]["policyType"] == "vnfPolicy"] + genDemands = translation.gen_demands(req_json, vnf_policies) for action in req_json['placementInfo']['placementDemands']: actionsList.append(action['resourceModuleName']) for key2,value in genDemands.items(): |