[WIP]Migration to new policy api 38/99038/12
authorRuoyu Ying <ruoyu.ying@intel.com>
Tue, 3 Dec 2019 16:48:46 +0000 (00:48 +0800)
committerRuoyu Ying <ruoyu.ying@intel.com>
Mon, 9 Mar 2020 22:30:48 +0000 (06:30 +0800)
*Change retrieval payload send to policy
*Change the configs inside common_config

Issue-ID: OPTFRA-520
Change-Id: I27a63294cdec3def7d415ed2dcb96e3606d9e21f
Signed-off-by: Ruoyu Ying <ruoyu.ying@intel.com>
35 files changed:
apps/placement/optimizers/conductor/api_builder.py
apps/placement/optimizers/conductor/translation.py
config/common_config.yaml
osdf/adapters/policy/interface.py
osdf/adapters/policy/utils.py
test/conductor/test_conductor_calls.py
test/conductor/test_conductor_translation.py
test/placement-tests/policy_response.json
test/placement-tests/policy_response2.json
test/placement-tests/request_placement_vfmod.json
test/placement-tests/test_by_scope.yaml
test/placement-tests/test_by_scope_org.yaml [new file with mode: 0644]
test/policy-local-files/meta-valid-policies-org.txt [new file with mode: 0644]
test/policy-local-files/meta-valid-policies.txt
test/policy-local-files/new_policies/Affinity_vCPE_1.json [new file with mode: 0644]
test/policy-local-files/new_policies/Affinity_vFW_TD.json [new file with mode: 0644]
test/policy-local-files/new_policies/Capacity_vGMuxInfra.json [new file with mode: 0644]
test/policy-local-files/new_policies/Capacity_vG_1.json [new file with mode: 0644]
test/policy-local-files/new_policies/Distance_vGMuxInfra_1.json [new file with mode: 0644]
test/policy-local-files/new_policies/Distance_vG_1.json [new file with mode: 0644]
test/policy-local-files/new_policies/Placement_Optimization_1.json [new file with mode: 0644]
test/policy-local-files/new_policies/QueryPolicy_vCPE.json [new file with mode: 0644]
test/policy-local-files/new_policies/QueryPolicy_vCPE_2.json [new file with mode: 0644]
test/policy-local-files/new_policies/QueryPolicy_vFW_TD.json [new file with mode: 0644]
test/policy-local-files/new_policies/hpa_policy_vGMuxInfra_1.json [new file with mode: 0644]
test/policy-local-files/new_policies/hpa_policy_vG_1.json [new file with mode: 0644]
test/policy-local-files/new_policies/meta-valid-policies.txt [new file with mode: 0644]
test/policy-local-files/new_policies/subscriber_policy_vCPE.json [new file with mode: 0644]
test/policy-local-files/new_policies/vnfPolicy_vFW_TD.json [new file with mode: 0644]
test/policy-local-files/new_policies/vnfPolicy_vG.json [new file with mode: 0644]
test/policy-local-files/new_policies/vnfPolicy_vGMuxInfra.json [new file with mode: 0644]
test/policy-local-files/new_policies/vnfPolicy_vPGN_TD.json [new file with mode: 0644]
test/test_ConductorApiBuilder.py
test/test_PolicyCalls.py
test/test_get_opt_query_data.py

index 7b61580..cefde51 100644 (file)
@@ -32,7 +32,7 @@ def _build_parameters(group_policies, request_json):
     :param request_json: parameter data received from a client
     :return:
     """
-    initial_params = tr.get_opt_query_data(request_json, group_policies['request_param_query'])
+    initial_params = tr.get_opt_query_data(request_json, group_policies['onap.policies.optimization.QueryPolicy'])
     params = dict()
     params.update({"REQUIRED_MEM": initial_params.pop("requiredMemory", "")})
     params.update({"REQUIRED_DISK": initial_params.pop("requiredDisk", "")})
@@ -61,22 +61,34 @@ def conductor_api_builder(request_json, flat_policies: list, local_config,
     templ = Template(open(template).read())
     gp = group_policies_gen(flat_policies, local_config)
     demand_vnf_name_list = []
-
     for placementDemand in request_json['placementInfo']['placementDemands']:
         demand_vnf_name_list.append(placementDemand['resourceModuleName'].lower())
-    demand_list = tr.gen_demands(request_json, gp['vnfPolicy'])
+    demand_list = tr.gen_demands(request_json, gp['onap.policies.optimization.VnfPolicy'])
+    # What's the attribute policy? Need an example
     attribute_policy_list = tr.gen_attribute_policy(demand_vnf_name_list, gp['attribute'])
     distance_to_location_policy_list = tr.gen_distance_to_location_policy(
-        demand_vnf_name_list, gp['distance_to_location'])
+        demand_vnf_name_list, gp['onap.policies.optimization.DistancePolicy'])
+    # What's the inventory group policy? A policy to choose the inventory group from existing list?
     inventory_policy_list = tr.gen_inventory_group_policy(demand_vnf_name_list, gp['inventory_group'])
+    # What's the instance fit policy, a policy to choose the instance from existing list?
     resource_instance_policy_list = tr.gen_resource_instance_policy(
         demand_vnf_name_list, gp['instance_fit'])
+    # Need an example for the resource_region_policy
     resource_region_policy_list = tr.gen_resource_region_policy(demand_vnf_name_list, gp['region_fit'])
-    zone_policy_list = tr.gen_zone_policy(demand_vnf_name_list, gp['zone'])
-    optimization_policy_list = tr.gen_optimization_policy(demand_vnf_name_list, gp['placement_optimization'])
+    zone_policy_list = tr.gen_zone_policy(demand_vnf_name_list, gp['onap.policies.optimization.AffinityPolicy'])
+    optimization_policy_list = tr.gen_optimization_policy(demand_vnf_name_list,
+                                                          gp['onap.policies.optimization.OptimizationPolicy'])
+    # Need an example for the instance reservation policy
     reservation_policy_list = tr.gen_reservation_policy(demand_vnf_name_list, gp['instance_reservation'])
-    capacity_policy_list = tr.gen_capacity_policy(demand_vnf_name_list, gp['vim_fit'])
-    hpa_policy_list = tr.gen_hpa_policy(demand_vnf_name_list, gp['hpa'])
+    capacity_policy_list = tr.gen_capacity_policy(demand_vnf_name_list, gp['onap.policies.optimization.Vim_fit'])
+    hpa_policy_list = tr.gen_hpa_policy(demand_vnf_name_list, gp['onap.policies.optimization.HpaPolicy'])
+    #distance_to_location_policy_list = tr.gen_distance_to_location_policy(
+    #    demand_vnf_name_list, gp['distance_to_location'])
+    # demand_list = tr.gen_demands(request_json, gp['vnfPolicy'])
+    #zone_policy_list = tr.gen_zone_policy(demand_vnf_name_list, gp['zone'])
+    #optimization_policy_list = tr.gen_optimization_policy(demand_vnf_name_list, gp['placement_optimization'])
+    #capacity_policy_list = tr.gen_capacity_policy(demand_vnf_name_list, gp['vim_fit'])
+    #hpa_policy_list = tr.gen_hpa_policy(demand_vnf_name_list, gp['hpa'])
     req_params_dict = _build_parameters(gp, request_json)
     conductor_policies = [attribute_policy_list, distance_to_location_policy_list, inventory_policy_list,
                           resource_instance_policy_list, resource_region_policy_list, zone_policy_list,
index 46bee1d..45deb2d 100644 (file)
@@ -37,7 +37,7 @@ def get_opt_query_data(req_json, policies):
     if 'requestParameters' in req_json["placementInfo"]:
         req_params = req_json["placementInfo"]["requestParameters"]
         for policy in policies:
-            for queryProp in policy['content']['queryProperties']:
+            for queryProp in policy[list(policy.keys())[0]]['properties']['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:
@@ -53,13 +53,13 @@ def gen_optimization_policy(vnf_list, optimization_policy):
     """
     optimization_policy_list = []
     for policy in optimization_policy:
-        content = policy['content']
+        content = policy[list(policy.keys())[0]]['properties']
         parameter_list = []
         parameters = ["cloud_version", "hpa_score"]
 
         for attr in content['objectiveParameter']['parameterAttributes']:
             parameter = attr['parameter'] if attr['parameter'] in parameters else attr['parameter']+"_between"
-            vnfs = get_matching_vnfs(attr['resources'], vnf_list)
+            default, vnfs = get_matching_vnfs(attr['resources'], vnf_list)
             for vnf in vnfs:
                 value = [vnf] if attr['parameter'] in parameters else [attr['customerLocationInfo'], vnf]
                 parameter_list.append({
@@ -79,14 +79,16 @@ def get_matching_vnfs(resources, vnf_list, match_type="intersection"):
     :param match_type: "intersection" or "all" or "any" (any => send all_vnfs if there is any intersection)
     :return: List of matching VNFs
     """
-    resources_lcase = [x.lower() for x in resources]
+    # Check if it is a default policy
+    default = True if resources == [] else False
+    resources_lcase = [x.lower() for x in resources] if not default else [x.lower() for x in vnf_list]
     if match_type == "all":  # don't bother with any comparisons
-        return resources if set(resources_lcase) <= set(vnf_list) else None
-    common_vnfs = set(vnf_list) & set(resources_lcase)
-    common_resources = [x for x in resources if x.lower() in common_vnfs]
+        return default, resources if set(resources_lcase) <= set(vnf_list) else None
+    common_vnfs = set(vnf_list) & set(resources_lcase) if not default else set(vnf_list)
+    common_resources = [x for x in resources if x.lower() in common_vnfs] if not default else list(common_vnfs)
     if match_type == "intersection":  # specifically requested intersection
-        return list(common_resources)
-    return resources if common_vnfs else None  # "any" match => all resources to be returned
+        return default, list(common_resources)
+    return default, resources if common_vnfs else None  # "any" match => all resources to be returned
 
 
 def gen_policy_instance(vnf_list, resource_policy, match_type="intersection", rtype=None):
@@ -102,16 +104,36 @@ def gen_policy_instance(vnf_list, resource_policy, match_type="intersection", rt
     resource_policy_list = []
     related_policies = []
     for policy in resource_policy:
-        pc = policy['content']
-        demands = get_matching_vnfs(pc['resources'], vnf_list, match_type=match_type)
-        resource = {pc['identity']: {'type': pc['policyType'], 'demands': demands}}
+        pc = policy[list(policy.keys())[0]]
+        default, demands = get_matching_vnfs(pc['properties']['resources'], vnf_list, match_type=match_type)
+        resource = {pc['properties']['identity']: {'type': pc['type'], 'demands': demands}}
 
         if rtype:
-            resource[pc['identity']]['properties'] = {'controller': pc[rtype]['controller'],
-                                                      'request': json.loads(pc[rtype]['request'])}
+            resource[pc['properties']['identity']]['properties'] = {'controller': pc[rtype]['controller'],
+                                                                    'request': json.loads(pc[rtype]['request'])}
         if demands and len(demands) != 0:
-            resource_policy_list.append(resource)
+            # The default policy shall not override the specific policy that already appended
+            if default:
+                for d in demands:
+                    resource_repeated = True \
+                        if {pc['properties']['identity']: {'type': pc['type'], 'demands': d}} \
+                           in resource_policy_list else False
+                    if resource_repeated:
+                        continue
+                    else:
+                        resource_policy_list.append(
+                            {pc['properties']['identity']: {'type': pc['type'], 'demands': d }})
+                        policy[list(policy.keys())[0]]['properties']['resources'] = d
+                        related_policies.append(policy)
+            # Need to override the default policies, here delete the outdated policy stored in the db
+            if resource in resource_policy_list:
+                for pc in related_policies:
+                    if pc[list(pc.keys()[0])]['properties']['resources'] == resource:
+                        related_policies.remove(pc)
+                resource_policy_list.remove(resource)
             related_policies.append(policy)
+            resource_policy_list.append(resource)
+
     return resource_policy_list, related_policies
 
 
@@ -143,9 +165,9 @@ 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']['distanceProperties']
+        properties = p_main[list(p_main.keys())[0]]['properties']['distanceProperties']
         pcp_d = properties['distance']
-        p_new[p_main['content']['identity']]['properties'] = {
+        p_new[p_main[list(p_main.keys())[0]]['properties']['identity']]['properties'] = {
             'distance': pcp_d['operator'] + " " + pcp_d['value'].lower() + " " + pcp_d['unit'].lower(),
             'location': properties['locationInfo']
         }
@@ -156,9 +178,9 @@ def gen_attribute_policy(vnf_list, attribute_policy):
     """Get policies governing attributes of VNFs in order to populate the Conductor API call"""
     cur_policies, related_policies = gen_policy_instance(vnf_list, attribute_policy, rtype=None)
     for p_new, p_main in zip(cur_policies, related_policies):  # add additional fields to each policy
-        properties = p_main['content']['cloudAttributeProperty']
+        properties = p_main[list(p_main.keys())[0]]['properties']['cloudAttributeProperty']
         attribute_mapping = policy_config_mapping['filtering_attributes']  # wanted attributes and mapping
-        p_new[p_main['content']['identity']]['properties'] = {
+        p_new[p_main[list(p_main.keys())[0]]['properties']['identity']]['properties'] = {
             'evaluate': dict((k, properties.get(attribute_mapping.get(k))) for k in attribute_mapping.keys())
         }
     return cur_policies  # cur_policies gets updated in place...
@@ -168,8 +190,9 @@ 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, 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']['affinityProperty']
-        p_new[p_main['content']['identity']]['properties'] = {'category': pmz['category'], 'qualifier': pmz['qualifier']}
+        pmz = p_main[list(p_main.keys())[0]]['properties']['affinityProperties']
+        p_new[p_main[list(p_main.keys())[0]]['properties']['identity']]['properties'] = \
+            {'category': pmz['category'], 'qualifier': pmz['qualifier']}
     return cur_policies
 
 
@@ -177,8 +200,8 @@ def gen_capacity_policy(vnf_list, capacity_policy):
     """Get zone policies in order to populate the Conductor API call"""
     cur_policies, related_policies = gen_policy_instance(vnf_list, capacity_policy, rtype=None)
     for p_new, p_main in zip(cur_policies, related_policies):  # add additional fields to each policy
-        pmz = p_main['content']['capacityProperty']
-        p_new[p_main['content']['identity']]['properties'] = \
+        pmz = p_main[list(p_main.keys())[0]]['properties']['capacityProperty']
+        p_new[p_main[list(p_main.keys())[0]]['properties']['identity']]['properties'] = \
             {"controller": pmz['controller'], 'request': json.loads(pmz['request'])}
     return cur_policies
 
@@ -187,7 +210,8 @@ def gen_hpa_policy(vnf_list, hpa_policy):
     """Get zone policies in order to populate the Conductor API call"""
     cur_policies, related_policies = gen_policy_instance(vnf_list, hpa_policy, rtype=None)
     for p_new, p_main in zip(cur_policies, related_policies):  # add additional fields to each policy
-        p_new[p_main['content']['identity']]['properties'] = {'evaluate': p_main['content']['flavorFeatures']}
+        p_new[p_main[list(p_main.keys())[0]]['properties']['identity']]['properties'] = \
+            {'evaluate': p_main[list(p_main.keys())[0]]['properties']['flavorFeatures']}
     return cur_policies
 
 
@@ -213,10 +237,12 @@ 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:
-        policy_demands = set([x.lower() for x in policy['content'].get('resources', [])])
-        if demand['resourceModuleName'].lower() not in policy_demands:
+        policy_demands = set([x.lower() for x in policy[list(policy.keys())[0]]['properties']['resources']])
+        if policy_demands and demand['resourceModuleName'].lower() not in policy_demands:
             continue  # no match for this policy
-        for policy_property in policy['content']['vnfProperties']:
+        elif policy_demands == set(): # Append resource name for default policy
+            policy[list(policy.keys())[0]]['properties'].update(resources=list(demand.get('resourceModuleName')))
+        for policy_property in policy[list(policy.keys())[0]]['properties']['vnfProperties']:
             yield policy_property
 
 
index 7eced05..f29e8c0 100644 (file)
@@ -50,31 +50,35 @@ references:
     service_name:
         source: request
         value: serviceInfo.serviceName
+    resource:
+        source: request
+        value: placementInfo.placementDemands.resourceModuleName
     subscriber_role:
-        source: SubscriberPolicy
-        value: content.properties.subscriberRole
+        source: onap.policies.optimization.SubscriberPolicy
+        value: properties.properties.subscriberRole
 
 policy_info:
     prioritization_attributes:
         policy_type:
-            - content.policyType
+            - type
         resources:
-            - content.resources
-            - content.objectiveParameter.parameterAttributes.resources
+            - properties.resources
+            - properties.objectiveParameter.parameterAttributes.resources
         service_name:
-            - content.serviceName
+            - properties.services
 
     placement:
         policy_fetch: by_scope
         policy_scope:
-            default_scope: OSDF_DUBLIN
-            vcpe_scope: OSDF_DUBLIN
-            vfw_scope: OSDF_DUBLIN
-            td_scope: OSDF_DUBLIN
-            secondary_scopes:
-                -
-                    - get_param: service_name
+            -
+                scope:
+                    - OSDF_FRANKFURT
+                geography:
                     - US
+                service:
+                    - get_param: service_name
+                resources:
+                    - get_param: resource
     #            -
     #                - get_param: service_name
     #                - get_param: subscriber_role
index 61861de..9ace75e 100644 (file)
@@ -58,25 +58,32 @@ def get_by_scope(rest_client, req, config_local, type_service):
     """
     scope_policies = []
     references = config_local.get('references', {})
-    pscope = config_local.get('policy_info', {}).get(type_service, {}).get('policy_scope', {})
-    service_name = dot_notation(req, references.get('service_name', {}).get('value', None))
-    primary_scope = pscope['{}_scope'.format(service_name.lower() if pscope.get(service_name + "_scope", None)
-                                             else "default")]
-    for sec_scope in pscope.get('secondary_scopes', []):
-        policies, scope_fields = [], []
-        for field in sec_scope:
-            scope_fields.extend([get_scope_fields(field, references, req, list_flatten(scope_policies))
-                                if 'get_param' in field else field])
-        scope_fields = set(list_flatten(scope_fields))
-        scope_fields = set([x.lower() for x in scope_fields])
-        for scope in scope_fields:
-            policies.extend(policy_api_call(rest_client, primary_scope, scope))
-        scope_policies.append([policy for policy in policies
-                              if scope_fields <= set(json.loads(policy['config'])['content']['policyScope'])])
+    pscope = config_local.get('policy_info', {}).get(type_service, {}).get('policy_scope', [])
+    scope_fields = {}
+    policies = {}
+    for scopes in pscope:
+        for key in scopes.keys():
+            for field in scopes[key]:
+                scope_fields[key] = set(list_flatten([get_scope_fields(field, references, req, policies)
+                                                      if 'get_param' in field else field]))
+        if scope_fields.get('resources') and len(scope_fields['resources']) > 1:
+            for s in scope_fields['resources']:
+                scope_fields['resources'] = [s]
+                policies.update(policy_api_call(rest_client, scope_fields).get('policies', {}))
+        else:
+            policies.update(policy_api_call(rest_client, scope_fields).get('policies', {}))
+        for policyName in policies.keys():
+            keys = scope_fields.keys() & policies[policyName]['properties'].keys()
+            policy = {}
+            policy[policyName] = policies[policyName]
+            scope_policies.append(policy for k in keys
+                                  if set(policies.get(policyName, {}).get('properties',{}).get(k)) >= set(scope_fields[k])
+                                  and policy not in scope_policies)
+
     return scope_policies
 
 
-def get_scope_fields(field, references, req, policy_info):
+def get_scope_fields(field, references, req, policies):
     """ Retrieve the values for scope fields from a request and policies as per the configuration
     and references defined in a configuration file. If the value of a scope field missing in a request or
     policies, throw an exception since correct policies cannot be retrieved.
@@ -95,9 +102,9 @@ def get_scope_fields(field, references, req, policy_info):
         raise BusinessException("Field {} is missing a value in a request".format(ref_value.split('.')[-1]))
     else:
         scope_fields = []
-        for policy in policy_info:
-            policy_content = json.loads(policy.get('config', "{}"))
-            if policy_content.get('content', {}).get('policyType', "invalid_policy") == ref_source:
+        for policyName in policies.keys():
+            policy_content = policies.get(policyName)
+            if policy_content.get('type', "invalid_policy") == ref_source:
                 scope_fields.append(dot_notation(policy_content, ref_value))
         scope_values = list_flatten(scope_fields)
         if len(scope_values) > 0:
@@ -105,20 +112,19 @@ def get_scope_fields(field, references, req, policy_info):
         raise BusinessException("Field {} is missing a value in all policies of type {}".format(
             ref_value.split('.')[-1], ref_source))
 
-
-def policy_api_call(rest_client, primary_scope, scope_field):
-    """ Makes a getConfig API call to the policy system to retrieve policies matching a scope.
-    :param rest_client: rest client object to make a call
-    :param primary_scope: the primary scope of policies, which is a folder in the policy system
-    where policies are stored.
-    :param scope_field: the secondary scope of policies, which is a collection of domain values.
-    :return: a list of policies matching both primary and secondary scopes.
+def policy_api_call(rest_client, scope_fields):
     """
-    api_call_body = {"policyName": "{}.*".format(primary_scope),
-                     "configAttributes": {"policyScope": "{}".format(scope_field)}}
+    :param rest_client: rest client to make a call
+    :param scope_fields: a collection of scopes to be used for filtering
+    :return: a list of policies matching all filters
+    """
+    api_call_body = {"ONAPName": "OOF",
+                     "ONAPComponent": "OOF_Component",
+                     "ONAPInstance": "OOF_Component_Instance",
+                     "action": "optimize",
+                     "resources": "{}".format(scope_fields)}
     return rest_client.request(json=api_call_body)
 
-
 def remote_api(req_json, osdf_config, service_type="placement"):
     """Make a request to policy and return response -- it accounts for multiple requests that be needed
     :param req_json: policy request object (can have multiple policy names)
@@ -140,10 +146,10 @@ def remote_api(req_json, osdf_config, service_type="placement"):
 
     formatted_policies = []
     for x in itertools.chain(*policies):
-        if x['config'] is None:
-            raise BusinessException("Config not found for policy with name %s" % x['policyName'])
+        if x[list(x.keys())[0]].get('properties') is None:
+            raise BusinessException("Properties not found for policy with name %s" % x[list(x.keys()[0])])
         else:
-            formatted_policies.append(json.loads(x['config']))
+            formatted_policies.append(x)
     return formatted_policies
 
 
index 2f873af..79047eb 100644 (file)
@@ -33,11 +33,11 @@ def group_policies_gen(flat_policies, config):
     """
     filtered_policies = defaultdict(list)
     policy_name = []
-    policies = [x for x in flat_policies if x['content'].get('policyType')]  # drop ones without 'policy_type'
+    policies = [x for x in flat_policies if x[list(x.keys())[0]]["type"]] # drop ones without '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 = [dot_notation(plc[list(plc.keys())[0]], 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):
@@ -45,12 +45,12 @@ def group_policies_gen(flat_policies, config):
             aggregated_policies[y].append(plc)
 
     for key in aggregated_policies.keys():
-        aggregated_policies[key].sort(key=lambda x: x['priority'], reverse=True)
+        #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:
+        if list(prioritized_policy.keys())[0] 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'])
+            filtered_policies[prioritized_policy[list(prioritized_policy.keys())[0]]['type']].append(prioritized_policy)
+            policy_name.append(list(prioritized_policy.keys())[0])
 
     return filtered_policies
 
index 52e0367..d811e63 100644 (file)
@@ -40,12 +40,12 @@ class TestConductorCalls(unittest.TestCase):
 
     def test_request(self):
         req_json = json_from_file("./test/placement-tests/request.json")
-        policies = pol.get_local_policies("test/policy-local-files/", self.lp)
+        policies = pol.get_local_policies("test/policy-local-files/new_policies/", self.lp)
         conductor.request(req_json, self.osdf_config, policies)
 
     def test_request_vfmod(self):
         req_json = json_from_file("./test/placement-tests/request_vfmod.json")
-        policies = pol.get_local_policies("test/policy-local-files/", self.lp)
+        policies = pol.get_local_policies("test/policy-local-files/new_policies/", self.lp)
         conductor.request(req_json, self.osdf_config, policies)
 
 
index ad70157..cc9dc1c 100644 (file)
@@ -28,7 +28,7 @@ class TestConductorTranslation(unittest.TestCase):
         self.main_dir = ""
         self.conductor_api_template = self.main_dir + "osdf/templates/conductor_interface.json"
         self.local_config_file = self.main_dir + "config/common_config.yaml"
-        policy_data_path = self.main_dir + "test/policy-local-files"
+        policy_data_path = self.main_dir + "test/policy-local-files/new_policies"
 
         valid_policies_list_file = policy_data_path + '/' + 'meta-valid-policies.txt'
         valid_policies_files = local_policies.get_policy_names_from_file(valid_policies_list_file)
@@ -44,13 +44,15 @@ class TestConductorTranslation(unittest.TestCase):
 
     def test_gen_demands(self):
         # need to run this only on vnf policies
-        vnf_policies = [x for x in self.policies if x["content"]["policyType"] == "vnfPolicy"]
+        vnf_policies = [x for x in self.policies if x[list(x.keys())[0]]["type"]
+                        == "onap.policies.optimization.VnfPolicy"]
         res = tr.gen_demands(self.request_json, vnf_policies)
         assert res is not None
 
     def test_gen_vfmod_demands(self):
         # need to run this only on vnf policies
-        vnf_policies = [x for x in self.policies if x["content"]["policyType"] == "vnfPolicy"]
+        vnf_policies = [x for x in self.policies if x[list(x.keys())[0]]["type"]
+                        == "onap.policies.optimization.VnfPolicy"]
         res = tr.gen_demands(self.request_vfmod_json, vnf_policies)
         assert res is not None
 
index 8de8537..a257ecc 100644 (file)
-[
   {
-    "policyConfigMessage": "Config Retrieved! ",
-    "policyConfigStatus": "CONFIG_RETRIEVED",
-    "type": "JSON",
-    "config": "{\"service\":\"SubscriberPolicy\",\"policyName\":\"oofBeijing.SubscriberPolicy_v1\",\"description\":\"Subscriber Policy\",\"templateVersion\":\"0.0.1\",\"version\":\"oofBeijing\",\"priority\":\"1\",\"riskType\":\"test\",\"riskLevel\":\"3\",\"guard\":\"False\",\"content\":{\"identity\":\"subscriber\",\"policyScope\":[\"vcpe\",\"PVT Homing\",\"subscriberpolicy\",\"subscriber_x\",\"subscriber_y\"],\"properties\":{\"subscriberName\":[\"subscriber_x\",\"subscriber_y\"],\"subscriberRole\":[\"PVT Homing\"],\"provStatus\":[\"CAPPED\"]},\"policyType\":\"SubscriberPolicy\"}}",
-    "policyName": "oofBeijing.Config_MS_SubscriberPolicy_v1.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "SubscriberPolicy",
-      "uuid": "",
-      "Location": ""
-    },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "policyConfigMessage": "Config Retrieved! ",
-    "policyConfigStatus": "CONFIG_RETRIEVED",
-    "type": "JSON",
-    "config": "{\"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\",\"PVT Homing\",\"us\",\"international\",\"ip\",\"vGMuxInfra\"],\"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\":\"\"}]}]}]}}",
-    "policyName": "oofBeijing.Config_MS_hpaPolicy_vGMuxInfra.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "hpaPolicy",
-      "uuid": "",
-      "Location": ""
-    },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "policyConfigMessage": "Config Retrieved! ",
-    "policyConfigStatus": "CONFIG_RETRIEVED",
-    "type": "JSON",
-    "config": "{\"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\",\"PVT Homing\",\"international\",\"ip\",\"vG\"],\"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\"}]}}",
-    "policyName": "oofBeijing.Config_MS_vnfPolicy_vG.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "VnfPolicy",
-      "uuid": "",
-      "Location": ""
-    },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "policyConfigMessage": "Config Retrieved! ",
-    "policyConfigStatus": "CONFIG_RETRIEVED",
-    "type": "JSON",
-    "config": "{\"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\",\"PVT Homing\",\"international\",\"ip\",\"vGMuxInfra\"],\"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\"}]}}",
-    "policyName": "oofBeijing.Config_MS_vnfPolicy_vGMuxInfra.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "VnfPolicy",
-      "uuid": "",
-      "Location": ""
-    },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "policyConfigMessage": "Config Retrieved! ",
-    "policyConfigStatus": "CONFIG_RETRIEVED",
-    "type": "JSON",
-    "config": "{\"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\",\"PVT Homing\",\"us\",\"international\",\"ip\",\"vG\"],\"policyType\":\"distancePolicy\",\"applicableResources\":\"any\"}}",
-    "policyName": "oofBeijing.Config_MS_distancePolicy_vG.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "distancePolicy",
-      "uuid": "",
-      "Location": ""
-    },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "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\", \"PVT Homing\",\"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": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "capacityPolicy",
-      "uuid": "",
-      "Location": ""
-    },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "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\", \"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\", \"PVT Homing\",\"us\", \"international\", \"ip\", \"vGMuxInfra\", \"vG\", \"optimizationQueryPolicy\"], \"policyType\": \"optimizationQueryPolicy\"}}",
-    "policyName": "oofBeijing.Config_MS_queryPolicy_vcpe.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "optimizationQueryPolicy",
-      "uuid": "",
-      "Location": ""
-    },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "policyConfigMessage": "Config Retrieved! ",
-    "policyConfigStatus": "CONFIG_RETRIEVED",
-    "type": "JSON",
-    "config": "{\"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\",\"PVT Homing\",\"us\",\"international\",\"ip\",\"vGMuxInfra\",\"vG\"],\"policyType\":\"placementOptimization\",\"objective\":\"minimize\"}}",
-    "policyName": "oofBeijing.Config_MS_PlacementOptimizationPolicy_vGMuxInfra.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "PlacementOptimizationPolicy",
-      "uuid": "",
-      "Location": ""
-    },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "policyConfigMessage": "Config Retrieved! ",
-    "policyConfigStatus": "CONFIG_RETRIEVED",
-    "type": "JSON",
-    "config": "{\"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\",\"PVT Homing\",\"us\",\"international\",\"ip\",\"vGMuxInfra\"],\"policyType\":\"distancePolicy\",\"applicableResources\":\"any\"}}",
-    "policyName": "oofBeijing.Config_MS_distancePolicy_vGMuxInfra.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "distancePolicy",
-      "uuid": "",
-      "Location": ""
-    },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "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\", \"PVT Homing\",\"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": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "capacityPolicy",
-      "uuid": "",
-      "Location": ""
-    },
-    "responseAttributes": { },
-    "property": null
+    "policies": {
+      "OSDF_FRANKFURT.SubscriberPolicy_v1": {
+        "type": "onap.policies.optimization.SubscriberPolicy",
+        "version": "1.0.0",
+        "type_version": "1.0.0",
+        "metadata": {
+          "policy-id": "OSDF_FRANKFURT.SubscriberPolicy_v1",
+          "policy-version": 1
+        },
+        "properties": {
+          "scope": [
+            "OSDF_FRANKFURT"
+          ],
+          "services": [
+            "vCPE"
+          ],
+          "identity": "subscriber_vCPE",
+          "properties": {
+            "subscriberName": [
+              "subscriber_x",
+              "subscriber_y"
+            ],
+            "subscriberRole": [
+              "PVT Homing"
+            ],
+            "provStatus": [
+              "CAPPED"
+            ]
+          }
+        }
+      },
+      "OSDF_FRANKFURT.vnfPolicy_vG": {
+        "type": "onap.policies.optimization.VnfPolicy",
+        "version": "1.0.0",
+        "type_version": "1.0.0",
+        "metadata": {
+          "policy-id": "OSDF_FRANKFURT.vnfPolicy_vG",
+          "policy-version": 1
+        },
+        "properties": {
+          "scope": [
+            "OSDF_FRANKFURT"
+          ],
+          "services": [
+            "vCPE"
+          ],
+          "resources": [
+            "vG"
+          ],
+          "geography": [
+            "US",
+            "INTERNATIONAL"
+          ],
+          "identity": "vnf_vG",
+          "applicableResources": "any",
+          "vnfProperties": [
+            {
+              "inventoryProvider": "aai",
+              "serviceType": "",
+              "inventoryType": "cloud",
+              "customerId": "",
+              "orchestrationStatus": "",
+              "equipmentRole": ""
+            }
+          ]
+        }
+      },
+      "OSDF_FRANKFURT.vnfPolicy_vGMuxInfra": {
+        "type": "onap.policies.optimization.VnfPolicy",
+        "version": "1.0.0",
+        "type_version": "1.0.0",
+        "metadata": {
+          "policy-id": "OSDF_FRANKFURT.vnfPolicy_vGMuxInfra",
+          "policy-version": 1
+        },
+        "properties": {
+          "scope": [
+            "OSDF_FRANKFURT"
+          ],
+          "services": [
+            "vCPE"
+          ],
+          "resources": [
+            "vGMuxInfra"
+          ],
+          "geography": [
+            "US",
+            "INTERNATIONAL"
+          ],
+          "identity": "vnf_vGMuxInfra",
+          "applicableResources": "any",
+          "vnfProperties": [
+            {
+              "inventoryProvider": "aai",
+              "serviceType": "vGMuxInfra-xx",
+              "inventoryType": "service",
+              "customerId": "SDN-ETHERNET-INTERNET",
+              "orchestrationStatus": "",
+              "equipmentRole": ""
+            }
+          ]
+        }
+      },
+      "OSDF_FRANKFURT.Distance_vG_1": {
+        "type": "onap.policies.optimization.DistancePolicy",
+        "version": "1.0.0",
+        "type_version": "1.0.0",
+        "metadata": {
+          "policy-id": "OSDF_FRANKFURT.Distance_vG_1",
+          "policy-version": 1
+        },
+        "properties": {
+          "scope": [
+            "OSDF_FRANKFURT"
+          ],
+          "services": [
+            "vCPE"
+          ],
+          "resources": [
+            "vG"
+          ],
+          "geography": [
+            "US",
+            "INTERNATIONAL"
+          ],
+          "identity": "distance-vG",
+          "applicableResources": "any",
+          "distanceProperties": {
+            "locationInfo": "customer_loc",
+            "distance": {
+              "value": "1500",
+              "operator": "<",
+              "unit": "km"
+            }
+          }
+        }
+      },
+      "OSDF_FRANKFURT.Distance_vGMuxInfra": {
+        "type": "onap.policies.optimization.DistancePolicy",
+        "version": "1.0.0",
+        "type_version": "1.0.0",
+        "metadata": {
+          "policy-id": "OSDF_FRANKFURT.Distance_vGMuxInfra",
+          "policy-version": 1
+        },
+        "properties": {
+          "scope": [
+            "OSDF_FRANKFURT"
+          ],
+          "services": [
+            "vCPE"
+          ],
+          "resources": [
+            "vGMuxInfra"
+          ],
+          "geography": [
+            "US",
+            "INTERNATIONAL"
+          ],
+          "identity": "distance-vGMuxInfra",
+          "applicableResources": "any",
+          "distanceProperties": {
+            "locationInfo": "customer_loc",
+            "distance": {
+              "value": "500",
+              "operator": "<",
+              "unit": "km"
+            }
+          }
+        }
+      },
+      "OSDF_FRANKFURT.Placement_optimization_1": {
+        "type": "onap.policies.optimization.OptimizationPolicy",
+        "version": "1.0.0",
+        "type_version": "1.0.0",
+        "metadata": {
+          "policy-id": "OSDF_FRANKFURT.Placement_optimization_1",
+          "policy-version": 1
+        },
+        "properties": {
+          "scope": [
+            "OSDF_FRANKFURT"
+          ],
+          "services": [
+            "vCPE"
+          ],
+          "resources": [
+            "vG",
+            "vGMuxInfra"
+          ],
+          "geography": [
+            "US",
+            "INTERNATIONAL"
+          ],
+          "identity": "optimization",
+          "objective": "minimize",
+          "objectiveParameter": {
+            "parameterAttributes": [
+              {
+                "resources": [
+                  "vGMuxInfra"
+                ],
+                "customerLocationInfo": "customer_loc",
+                "parameter": "distance",
+                "weight": "1",
+                "operator": "product"
+              },
+              {
+                "resources": [
+                  "vG"
+                ],
+                "customerLocationInfo": "customer_loc",
+                "parameter": "distance",
+                "weight": "1",
+                "operator": "product"
+              },
+              {
+                "resources": [
+                  "vG"
+                ],
+                "parameter": "hpa_score",
+                "weight": "200",
+                "operator": "product"
+              },
+              {
+                "resources": [
+                  "vFW"
+                ],
+                "customerLocationInfo": "customer_loc",
+                "parameter": "distance",
+                "weight": "100",
+                "operator": "product"
+              },
+              {
+                "resources": [
+                  "vFW"
+                ],
+                "parameter": "hpa_score",
+                "weight": "200",
+                "operator": "product"
+              }
+            ],
+            "operator": "sum"
+          }
+        }
+      },
+      "OSDF_FRANKFURT.queryPolicy_vCPE": {
+        "type": "onap.policies.optimization.QueryPolicy",
+        "version": "1.0.0",
+        "type_version": "1.0.0",
+        "metadata": {
+          "policy-id": "OSDF_FRANKFURT.queryPolicy_vCPE",
+          "policy-version": 1
+        },
+        "properties": {
+          "scope": [
+            "OSDF_FRANKFURT"
+          ],
+          "services": [
+            "vCPE"
+          ],
+          "resources": [
+            "vGMuxInfra",
+            "vG"
+          ],
+          "geography": [
+            "US",
+            "INTERNATIONAL"
+          ],
+          "identity": "vCPE_Query_Policy",
+          "queryProperties": [
+            {
+              "attribute": "customerLatitude",
+              "attribute_location": "customerLatitude"
+            },
+            {
+              "attribute": "customerLongitude",
+              "attribute_location": "customerLongitude"
+            }
+          ]
+        }
+      },
+      "OSDF_FRANKFURT.hpa_policy_vG_1": {
+        "type": "onap.policies.optimization.HpaPolicy",
+        "version": "1.0.0",
+        "type_version": "1.0.0",
+        "metadata": {
+          "policy-id": "OSDF_FRANKFURT.hpa_policy_vG_1",
+          "policy-version": 1
+        },
+        "properties": {
+          "scope": [
+            "OSDF_FRANKFURT"
+          ],
+          "services": [
+            "vCPE"
+          ],
+          "resources": [
+            "vG"
+          ],
+          "geography": [
+            "US",
+            "INTERNATIONAL"
+          ],
+          "identity": "hpa-vG",
+          "flavorFeatures": [
+            {
+              "id": "vg_1",
+              "type": "vnfc",
+              "directives": [
+                {
+                  "type": "flavor_directives",
+                  "attributes": [
+                    {
+                      "attribute_name": "flavor_label_vm_01",
+                      "attribute_value": ""
+                    }
+                  ]
+                }
+              ],
+              "flavorProperties": [
+                {
+                  "hpa-feature": "cpuTopology",
+                  "mandatory": "True",
+                  "architecture": "generic",
+                  "directives": [],
+                  "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",
+                  "directives": [],
+                  "hpa-feature-attributes": [
+                    {
+                      "hpa-attribute-key": "numVirtualCpu",
+                      "hpa-attribute-value": 6,
+                      "operator": [
+                        "="
+                      ],
+                      "unit": ""
+                    },
+                    {
+                      "hpa-attribute-key": "virtualMemSize",
+                      "hpa-attribute-value": 6,
+                      "operator": [
+                        "="
+                      ],
+                      "unit": ""
+                    }
+                  ]
+                },
+                {
+                  "hpa-feature": "ovsDpdk",
+                  "mandatory": false,
+                  "score": 3,
+                  "architecture": "generic",
+                  "directives": [],
+                  "hpa-feature-attributes": [
+                    {
+                      "hpa-attribute-key": "dataProcessingAccelerationLibrary",
+                      "hpa-attribute-value": "ovsDpdk_version",
+                      "operator": [
+                        "="
+                      ],
+                      "unit": ""
+                    }
+                  ]
+                },
+                {
+                  "hpa-feature": "cpuInstructionSetExtensions",
+                  "mandatory": true,
+                  "architecture": "INTEL-64",
+                  "directives": [],
+                  "hpa-feature-attributes": [
+                    {
+                      "hpa-attribute-key": "instructionSetExtensions",
+                      "hpa-attribute-value": [
+                        "<CPUINST>",
+                        "<CPUINST>"
+                      ],
+                      "operator": [
+                        "ALL"
+                      ],
+                      "unit": ""
+                    }
+                  ]
+                }
+              ]
+            },
+            {
+              "id": "vg_2",
+              "type": "vnfc",
+              "directives": [
+                {
+                  "type": "flavor_directives",
+                  "attributes": [
+                    {
+                      "attribute_name": "flavor_label_vm_02",
+                      "attribute_value": ""
+                    }
+                  ]
+                }
+              ],
+              "flavorProperties": [
+                {
+                  "hpa-feature": "cpuPinningy",
+                  "mandatory": "True",
+                  "architecture": "generic",
+                  "directives": [],
+                  "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",
+                  "directives": [],
+                  "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",
+                  "directives": [],
+                  "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": "pciePassthrough",
+                  "mandatory": "True",
+                  "architecture": "generic",
+                  "directives": [],
+                  "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": ""
+                    }
+                  ]
+                }
+              ]
+            },
+            {
+              "id": "vg_3",
+              "type": "vnfc",
+              "directives": [
+                {
+                  "type": "flavor_directives",
+                  "attributes": [
+                    {
+                      "attribute_name": "flavor_label_vm_03",
+                      "attribute_value": ""
+                    }
+                  ]
+                }
+              ],
+              "flavorProperties": [
+                {
+                  "hpa-feature": "numa",
+                  "mandatory": "False",
+                  "score": "5",
+                  "architecture": "generic",
+                  "directives": [],
+                  "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",
+                  "directives": [],
+                  "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",
+                  "directives": [],
+                  "hpa-feature-attributes": [
+                    {
+                      "hpa-attribute-key": "memoryPageSize",
+                      "hpa-attribute-value": "<MEMORYPAGESIZE>",
+                      "operator": "=",
+                      "unit": ""
+                    }
+                  ]
+                }
+              ]
+            }
+          ]
+        }
+      },
+      "OSDF_FRANKFURT.Capacity_vG_1": {
+        "type": "onap.policies.optimization.Vim_fit",
+        "version": "1.0.0",
+        "type_version": "1.0.0",
+        "metadata": {
+          "policy-id": "OSDF_FRANKFURT.Capacity_vG_1",
+          "policy-version": 1
+        },
+        "properties": {
+          "scope": [
+            "OSDF_FRANKFURT"
+          ],
+          "services": [
+            "vCPE"
+          ],
+          "resources": [
+            "vG"
+          ],
+          "geography": [
+            "US",
+            "INTERNATIONAL"
+          ],
+          "identity": "capacity_vG",
+          "applicableResources": "any",
+          "capacityProperty": {
+            "controller": "multicloud",
+            "request": "{\"vCPU\": 10, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, \"unit\": \"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\"}, \"unit\": \"GB\"}}"
+          }
+        }
+      },
+      "OSDF_FRANKFURT.Capacity_vGMuxInfra": {
+        "type": "onap.policies.optimization.Vim_fit",
+        "version": "1.0.0",
+        "type_version": "1.0.0",
+        "metadata": {
+          "policy-id": "OSDF_FRANKFURT.Capacity_vGMuxInfra",
+          "policy-version": 1
+        },
+        "properties": {
+          "scope": [
+            "OSDF_FRANKFURT"
+          ],
+          "services": [
+            "vCPE"
+          ],
+          "resources": [
+            "vGMuxInfra"
+          ],
+          "geography": [
+            "US",
+            "INTERNATIONAL"
+          ],
+          "identity": "capacity_vGMuxInfra",
+          "applicableResources": "any",
+          "capacityProperty": {
+            "controller": "multicloud",
+            "request": "{\"vCPU\": 10, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, \"unit\": \"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\"}, \"unit\": \"GB\"}}"
+          }
+        }
+      }
+    }
   }
-]
\ No newline at end of file
index 2cd6dcb..15ddbe1 100644 (file)
-[
-  {
-    "policyConfigMessage": "Config Retrieved! ",
-    "policyConfigStatus": "CONFIG_RETRIEVED",
-    "type": "JSON",
-    "config": "{\"service\":\"SubscriberPolicy\",\"policyName\":\"oofBeijing.SubscriberPolicy_v1\",\"description\":\"Subscriber Policy\",\"templateVersion\":\"0.0.1\",\"version\":\"oofBeijing\",\"priority\":\"1\",\"riskType\":\"test\",\"riskLevel\":\"3\",\"guard\":\"False\",\"content\":{\"identity\":\"subscriber\",\"policyScope\":[\"vCPE\",\"PVT Homing\",\"SubscriberPolicy\",\"subscriber_x\",\"subscriber_y\"],\"properties\":{\"subscriberName\":[\"subscriber_x\",\"subscriber_y\"],\"subscriberRole\":[\"PVT Homing\"],\"provStatus\":[\"CAPPED\"]},\"policyType\":\"SubscriberPolicy\"}}",
-    "policyName": "oofBeijing.Config_MS_SubscriberPolicy_v1.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "SubscriberPolicy",
-      "uuid": "",
-      "Location": ""
+{
+  "policies": {
+    "OSDF_FRANKFURT.SubscriberPolicy_v1": {
+      "type": "onap.policies.optimization.SubscriberPolicy",
+      "version": "1.0.0",
+      "type_version": "1.0.0",
+      "metadata": {
+        "policy-id": "OSDF_FRANKFURT.SubscriberPolicy_v1",
+        "policy-version": 1
+      },
+      "properties": {
+        "scope": [
+          "OSDF_FRANKFURT",
+          "PVT Homing"
+        ],
+        "services": [
+          "vCPE"
+        ],
+        "identity": "subscriber_vCPE",
+        "properties": {
+          "subscriberName": [
+            "subscriber_x",
+            "subscriber_y"
+          ],
+          "subscriberRole": [
+            "PVT Homing"
+          ],
+          "provStatus": [
+            "CAPPED"
+          ]
+        }
+      }
     },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "policyConfigMessage": "Config Retrieved! ",
-    "policyConfigStatus": "CONFIG_RETRIEVED",
-    "type": "JSON",
-    "config": "{\"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\",\"PVT Homing\",\"US\",\"INTERNATIONAL\",\"ip\",\"vGMuxInfra\"],\"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\":\"\"}]}]}]}}",
-    "policyName": "oofBeijing.Config_MS_hpaPolicy_vGMuxInfra.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "hpaPolicy",
-      "uuid": "",
-      "Location": ""
+    "OSDF_FRANKFURT.vnfPolicy_vG": {
+      "type": "onap.policies.optimization.VnfPolicy",
+      "version": "1.0.0",
+      "type_version": "1.0.0",
+      "metadata": {
+        "policy-id": "OSDF_FRANKFURT.vnfPolicy_vG",
+        "policy-version": 1
+      },
+      "properties": {
+        "scope": [
+          "OSDF_FRANKFURT",
+          "PVT Homing"
+        ],
+        "services": [
+          "vCPE"
+        ],
+        "resources": [
+          "vG"
+        ],
+        "geography": [
+          "US",
+          "INTERNATIONAL"
+        ],
+        "identity": "vnf_vG",
+        "applicableResources": "any",
+        "vnfProperties": [
+          {
+            "inventoryProvider": "aai",
+            "serviceType": "",
+            "inventoryType": "cloud",
+            "customerId": "",
+            "orchestrationStatus": "",
+            "equipmentRole": ""
+          }
+        ]
+      }
     },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "policyConfigMessage": "Config Retrieved! ",
-    "policyConfigStatus": "CONFIG_RETRIEVED",
-    "type": "JSON",
-    "config": "{\"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\"],\"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\"}]}}",
-    "policyName": "oofBeijing.Config_MS_vnfPolicy_vG.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "VnfPolicy",
-      "uuid": "",
-      "Location": ""
+    "OSDF_FRANKFURT.vnfPolicy_vGMuxInfra": {
+      "type": "onap.policies.optimization.VnfPolicy",
+      "version": "1.0.0",
+      "type_version": "1.0.0",
+      "metadata": {
+        "policy-id": "OSDF_FRANKFURT.vnfPolicy_vGMuxInfra",
+        "policy-version": 1
+      },
+      "properties": {
+        "scope": [
+          "OSDF_FRANKFURT",
+          "PVT Homing"
+        ],
+        "services": [
+          "vCPE"
+        ],
+        "resources": [
+          "vGMuxInfra"
+        ],
+        "geography": [
+          "US",
+          "INTERNATIONAL"
+        ],
+        "identity": "vnf_vGMuxInfra",
+        "applicableResources": "any",
+        "vnfProperties": [
+          {
+            "inventoryProvider": "aai",
+            "serviceType": "vGMuxInfra-xx",
+            "inventoryType": "service",
+            "customerId": "SDN-ETHERNET-INTERNET",
+            "orchestrationStatus": "",
+            "equipmentRole": ""
+          }
+        ]
+      }
     },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "policyConfigMessage": "Config Retrieved! ",
-    "policyConfigStatus": "CONFIG_RETRIEVED",
-    "type": "JSON",
-    "config": "{\"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\"],\"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\"}]}}",
-    "policyName": "oofBeijing.Config_MS_vnfPolicy_vGMuxInfra.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "VnfPolicy",
-      "uuid": "",
-      "Location": ""
+    "OSDF_FRANKFURT.Distance_vG_1": {
+      "type": "onap.policies.optimization.DistancePolicy",
+      "version": "1.0.0",
+      "type_version": "1.0.0",
+      "metadata": {
+        "policy-id": "OSDF_FRANKFURT.Distance_vG_1",
+        "policy-version": 1
+      },
+      "properties": {
+        "scope": [
+          "OSDF_FRANKFURT",
+          "PVT Homing"
+        ],
+        "services": [
+          "vCPE"
+        ],
+        "resources": [
+          "vG"
+        ],
+        "geography": [
+          "US",
+          "INTERNATIONAL"
+        ],
+        "identity": "distance-vG",
+        "applicableResources": "any",
+        "distanceProperties": {
+          "locationInfo": "customer_loc",
+          "distance": {
+            "value": "1500",
+            "operator": "<",
+            "unit": "km"
+          }
+        }
+      }
     },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "policyConfigMessage": "Config Retrieved! ",
-    "policyConfigStatus": "CONFIG_RETRIEVED",
-    "type": "JSON",
-    "config": "{\"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\"],\"policyType\":\"distancePolicy\",\"applicableResources\":\"any\"}}",
-    "policyName": "oofBeijing.Config_MS_distancePolicy_vG.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "distancePolicy",
-      "uuid": "",
-      "Location": ""
+    "OSDF_FRANKFURT.Distance_vGMuxInfra": {
+      "type": "onap.policies.optimization.DistancePolicy",
+      "version": "1.0.0",
+      "type_version": "1.0.0",
+      "metadata": {
+        "policy-id": "OSDF_FRANKFURT.Distance_vGMuxInfra",
+        "policy-version": 1
+      },
+      "properties": {
+        "scope": [
+          "OSDF_FRANKFURT",
+          "PVT Homing"
+        ],
+        "services": [
+          "vCPE"
+        ],
+        "resources": [
+          "vGMuxInfra"
+        ],
+        "geography": [
+          "US",
+          "INTERNATIONAL"
+        ],
+        "identity": "distance-vGMuxInfra",
+        "applicableResources": "any",
+        "distanceProperties": {
+          "locationInfo": "customer_loc",
+          "distance": {
+            "value": "500",
+            "operator": "<",
+            "unit": "km"
+          }
+        }
+      }
     },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "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\", \"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": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "capacityPolicy",
-      "uuid": "",
-      "Location": ""
+    "OSDF_FRANKFURT.Placement_optimization_1": {
+      "type": "onap.policies.optimization.OptimizationPolicy",
+      "version": "1.0.0",
+      "type_version": "1.0.0",
+      "metadata": {
+        "policy-id": "OSDF_FRANKFURT.Placement_optimization_1",
+        "policy-version": 1
+      },
+      "properties": {
+        "scope": [
+          "OSDF_FRANKFURT",
+          "PVT Homing"
+        ],
+        "services": [
+          "vCPE"
+        ],
+        "resources": [
+          "vG",
+          "vGMuxInfra"
+        ],
+        "geography": [
+          "US",
+          "INTERNATIONAL"
+        ],
+        "identity": "optimization",
+        "objective": "minimize",
+        "objectiveParameter": {
+          "parameterAttributes": [
+            {
+              "resources": [
+                "vGMuxInfra"
+              ],
+              "customerLocationInfo": "customer_loc",
+              "parameter": "distance",
+              "weight": "1",
+              "operator": "product"
+            },
+            {
+              "resources": [
+                "vG"
+              ],
+              "customerLocationInfo": "customer_loc",
+              "parameter": "distance",
+              "weight": "1",
+              "operator": "product"
+            },
+            {
+              "resources": [
+                "vG"
+              ],
+              "parameter": "hpa_score",
+              "weight": "200",
+              "operator": "product"
+            },
+            {
+              "resources": [
+                "vFW"
+              ],
+              "customerLocationInfo": "customer_loc",
+              "parameter": "distance",
+              "weight": "100",
+              "operator": "product"
+            },
+            {
+              "resources": [
+                "vFW"
+              ],
+              "parameter": "hpa_score",
+              "weight": "200",
+              "operator": "product"
+            }
+          ],
+          "operator": "sum"
+        }
+      }
     },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "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\", \"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": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "optimizationQueryPolicy",
-      "uuid": "",
-      "Location": ""
+    "OSDF_FRANKFURT.queryPolicy_vCPE": {
+      "type": "onap.policies.optimization.QueryPolicy",
+      "version": "1.0.0",
+      "type_version": "1.0.0",
+      "metadata": {
+        "policy-id": "OSDF_FRANKFURT.queryPolicy_vCPE",
+        "policy-version": 1
+      },
+      "properties": {
+        "scope": [
+          "OSDF_FRANKFURT",
+          "PVT Homing"
+        ],
+        "services": [
+          "vCPE"
+        ],
+        "resources": [
+          "vGMuxInfra",
+          "vG"
+        ],
+        "geography": [
+          "US",
+          "INTERNATIONAL"
+        ],
+        "identity": "vCPE_Query_Policy",
+        "queryProperties": [
+          {
+            "attribute": "customerLatitude",
+            "attribute_location": "customerLatitude"
+          },
+          {
+            "attribute": "customerLongitude",
+            "attribute_location": "customerLongitude"
+          }
+        ]
+      }
     },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "policyConfigMessage": "Config Retrieved! ",
-    "policyConfigStatus": "CONFIG_RETRIEVED",
-    "type": "JSON",
-    "config": "{\"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\"],\"policyType\":\"placementOptimization\",\"objective\":\"minimize\"}}",
-    "policyName": "oofBeijing.Config_MS_PlacementOptimizationPolicy_vGMuxInfra.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "PlacementOptimizationPolicy",
-      "uuid": "",
-      "Location": ""
+    "OSDF_FRANKFURT.hpa_policy_vG_1": {
+      "type": "onap.policies.optimization.HpaPolicy",
+      "version": "1.0.0",
+      "type_version": "1.0.0",
+      "metadata": {
+        "policy-id": "OSDF_FRANKFURT.hpa_policy_vG_1",
+        "policy-version": 1
+      },
+      "properties": {
+        "scope": [
+          "OSDF_FRANKFURT",
+          "PVT Homing"
+        ],
+        "services": [
+          "vCPE"
+        ],
+        "resources": [
+          "vG"
+        ],
+        "geography": [
+          "US",
+          "INTERNATIONAL"
+        ],
+        "identity": "hpa-vG",
+        "flavorFeatures": [
+          {
+            "id": "vg_1",
+            "type": "vnfc",
+            "directives": [
+              {
+                "type": "flavor_directives",
+                "attributes": [
+                  {
+                    "attribute_name": "flavor_label_vm_01",
+                    "attribute_value": ""
+                  }
+                ]
+              }
+            ],
+            "flavorProperties": [
+              {
+                "hpa-feature": "cpuTopology",
+                "mandatory": "True",
+                "architecture": "generic",
+                "directives": [],
+                "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",
+                "directives": [],
+                "hpa-feature-attributes": [
+                  {
+                    "hpa-attribute-key": "numVirtualCpu",
+                    "hpa-attribute-value": 6,
+                    "operator": [
+                      "="
+                    ],
+                    "unit": ""
+                  },
+                  {
+                    "hpa-attribute-key": "virtualMemSize",
+                    "hpa-attribute-value": 6,
+                    "operator": [
+                      "="
+                    ],
+                    "unit": ""
+                  }
+                ]
+              },
+              {
+                "hpa-feature": "ovsDpdk",
+                "mandatory": false,
+                "score": 3,
+                "architecture": "generic",
+                "directives": [],
+                "hpa-feature-attributes": [
+                  {
+                    "hpa-attribute-key": "dataProcessingAccelerationLibrary",
+                    "hpa-attribute-value": "ovsDpdk_version",
+                    "operator": [
+                      "="
+                    ],
+                    "unit": ""
+                  }
+                ]
+              },
+              {
+                "hpa-feature": "cpuInstructionSetExtensions",
+                "mandatory": true,
+                "architecture": "INTEL-64",
+                "directives": [],
+                "hpa-feature-attributes": [
+                  {
+                    "hpa-attribute-key": "instructionSetExtensions",
+                    "hpa-attribute-value": [
+                      "<CPUINST>",
+                      "<CPUINST>"
+                    ],
+                    "operator": [
+                      "ALL"
+                    ],
+                    "unit": ""
+                  }
+                ]
+              }
+            ]
+          },
+          {
+            "id": "vg_2",
+            "type": "vnfc",
+            "directives": [
+              {
+                "type": "flavor_directives",
+                "attributes": [
+                  {
+                    "attribute_name": "flavor_label_vm_02",
+                    "attribute_value": ""
+                  }
+                ]
+              }
+            ],
+            "flavorProperties": [
+              {
+                "hpa-feature": "cpuPinningy",
+                "mandatory": "True",
+                "architecture": "generic",
+                "directives": [],
+                "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",
+                "directives": [],
+                "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",
+                "directives": [],
+                "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": "pciePassthrough",
+                "mandatory": "True",
+                "architecture": "generic",
+                "directives": [],
+                "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": ""
+                  }
+                ]
+              }
+            ]
+          },
+          {
+            "id": "vg_3",
+            "type": "vnfc",
+            "directives": [
+              {
+                "type": "flavor_directives",
+                "attributes": [
+                  {
+                    "attribute_name": "flavor_label_vm_03",
+                    "attribute_value": ""
+                  }
+                ]
+              }
+            ],
+            "flavorProperties": [
+              {
+                "hpa-feature": "numa",
+                "mandatory": "False",
+                "score": "5",
+                "architecture": "generic",
+                "directives": [],
+                "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",
+                "directives": [],
+                "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",
+                "directives": [],
+                "hpa-feature-attributes": [
+                  {
+                    "hpa-attribute-key": "memoryPageSize",
+                    "hpa-attribute-value": "<MEMORYPAGESIZE>",
+                    "operator": "=",
+                    "unit": ""
+                  }
+                ]
+              }
+            ]
+          }
+        ]
+      }
     },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "policyConfigMessage": "Config Retrieved! ",
-    "policyConfigStatus": "CONFIG_RETRIEVED",
-    "type": "JSON",
-    "config": "{\"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\"],\"policyType\":\"distancePolicy\",\"applicableResources\":\"any\"}}",
-    "policyName": "oofBeijing.Config_MS_distancePolicy_vGMuxInfra.1.xml",
-    "policyVersion": "1",
-    "matchingConditions": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "distancePolicy",
-      "uuid": "",
-      "Location": ""
+    "OSDF_FRANKFURT.Capacity_vG_1": {
+      "type": "onap.policies.optimization.Vim_fit",
+      "version": "1.0.0",
+      "type_version": "1.0.0",
+      "metadata": {
+        "policy-id": "OSDF_FRANKFURT.Capacity_vG_1",
+        "policy-version": 1
+      },
+      "properties": {
+        "scope": [
+          "OSDF_FRANKFURT",
+          "PVT Homing"
+        ],
+        "services": [
+          "vCPE"
+        ],
+        "resources": [
+          "vG"
+        ],
+        "geography": [
+          "US",
+          "INTERNATIONAL"
+        ],
+        "identity": "capacity_vG",
+        "applicableResources": "any",
+        "capacityProperty": {
+          "controller": "multicloud",
+          "request": "{\"vCPU\": 10, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, \"unit\": \"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\"}, \"unit\": \"GB\"}}"
+        }
+      }
     },
-    "responseAttributes": { },
-    "property": null
-  },
-  {
-    "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\", \"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": {
-      "ECOMPName": "SNIRO-Placement",
-      "ONAPName": "SNIRO-Placement",
-      "ConfigName": "",
-      "service": "capacityPolicy",
-      "uuid": "",
-      "Location": ""
-    },
-    "responseAttributes": { },
-    "property": null
+    "OSDF_FRANKFURT.Capacity_vGMuxInfra": {
+      "type": "onap.policies.optimization.Vim_fit",
+      "version": "1.0.0",
+      "type_version": "1.0.0",
+      "metadata": {
+        "policy-id": "OSDF_FRANKFURT.Capacity_vGMuxInfra",
+        "policy-version": 1
+      },
+      "properties": {
+        "scope": [
+          "OSDF_FRANKFURT",
+          "PVT Homing"
+        ],
+        "services": [
+          "vCPE"
+        ],
+        "resources": [
+          "vGMuxInfra"
+        ],
+        "geography": [
+          "US",
+          "INTERNATIONAL"
+        ],
+        "identity": "capacity_vGMuxInfra",
+        "applicableResources": "any",
+        "capacityProperty": {
+          "controller": "multicloud",
+          "request": "{\"vCPU\": 10, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, \"unit\": \"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\"}, \"unit\": \"GB\"}}"
+        }
+      }
+    }
   }
-]
\ No newline at end of file
+}
+
index 4b2b852..5242ee7 100644 (file)
@@ -93,7 +93,7 @@
     },
     "constraints": {
       "affinity_vFW_TD": {
-        "type": "zone",
+        "type": "onap.policies.optimization.AffinityPolicy",
         "demands": [
           "vFW-SINK",
           "vPGN"
index 2cdd4e4..1968b89 100644 (file)
@@ -2,23 +2,32 @@ references:
     service_name:
         source: request
         value: serviceInfo.serviceName
+    resource:
+        source: request
+        value: placementInfo.placementDemands.resourceModuleName
     subscriber_role:
-        source: SubscriberPolicy
-        value: content.properties.subscriberRole
+        source: onap.policies.optimization.SubscriberPolicy
+        value: properties.properties.subscriberRole
 
 policy_info:
     placement:
         policy_fetch: by_scope
         policy_scope:
-            default_scope: OSDF_R2
-            vcpe_scope: OSDF_R2
-            secondary_scopes:
-                -
-                    - get_param: service_name
-                    - SubscriberPolicy
-                -
+            -
+                scope:
+                    - OSDF_FRANKFURT
+                    - onap.policies.optimization.SubscriberPolicy
+                service:
                     - get_param: service_name
+            -
+                scope:
+                    - OSDF_FRANKFURT
                     - get_param: subscriber_role
+                service:
+                    - get_param: service_name
+    #            -
+    #                - get_param: service_name
+    #                - get_param: subscriber_role
     default:  # if no explicit service related information is needed
         policy_fetch: by_name
-        policy_scope: none
+        policy_scope: none
\ No newline at end of file
diff --git a/test/placement-tests/test_by_scope_org.yaml b/test/placement-tests/test_by_scope_org.yaml
new file mode 100644 (file)
index 0000000..2cdd4e4
--- /dev/null
@@ -0,0 +1,24 @@
+references:
+    service_name:
+        source: request
+        value: serviceInfo.serviceName
+    subscriber_role:
+        source: SubscriberPolicy
+        value: content.properties.subscriberRole
+
+policy_info:
+    placement:
+        policy_fetch: by_scope
+        policy_scope:
+            default_scope: OSDF_R2
+            vcpe_scope: OSDF_R2
+            secondary_scopes:
+                -
+                    - get_param: service_name
+                    - SubscriberPolicy
+                -
+                    - get_param: service_name
+                    - get_param: subscriber_role
+    default:  # if no explicit service related information is needed
+        policy_fetch: by_name
+        policy_scope: none
diff --git a/test/policy-local-files/meta-valid-policies-org.txt b/test/policy-local-files/meta-valid-policies-org.txt
new file mode 100644 (file)
index 0000000..99e3e88
--- /dev/null
@@ -0,0 +1,16 @@
+Affinity_vCPE_1.json
+Capacity_vGMuxInfra.json
+Capacity_vG_1.json
+Distance_vGMuxInfra_1.json
+Distance_vG_1.json
+Placement_Optimization_1.json
+QueryPolicy_vCPE.json
+QueryPolicy_vCPE_2.json
+hpa_policy_vGMuxInfra_1.json
+hpa_policy_vG_1.json
+vnfPolicy_vG.json
+vnfPolicy_vGMuxInfra.json
+QueryPolicy_vFW_TD.json
+vnfPolicy_vFW_TD.json
+vnfPolicy_vPGN_TD.json
+affinity_vFW_TD.json
\ No newline at end of file
index 99e3e88..53f113f 100644 (file)
@@ -11,6 +11,3 @@ hpa_policy_vG_1.json
 vnfPolicy_vG.json
 vnfPolicy_vGMuxInfra.json
 QueryPolicy_vFW_TD.json
-vnfPolicy_vFW_TD.json
-vnfPolicy_vPGN_TD.json
-affinity_vFW_TD.json
\ No newline at end of file
diff --git a/test/policy-local-files/new_policies/Affinity_vCPE_1.json b/test/policy-local-files/new_policies/Affinity_vCPE_1.json
new file mode 100644 (file)
index 0000000..4f111eb
--- /dev/null
@@ -0,0 +1,33 @@
+{
+  "OSDF_FRANKFURT.Affinity_vCPE_1": {
+    "type": "onap.policies.optimization.AffinityPolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.Affinity_vCPE_1",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT"
+      ],
+      "services": [
+        "vCPE"
+      ],
+      "resources": [
+        "vG",
+        "vGMuxInfra"
+      ],
+      "geography": [
+        "US",
+        "INTERNATIONAL"
+      ],
+      "identity": "affinity_vCPE",
+      "applicableResources": "any",
+      "affinityProperties": {
+        "qualifier": "same",
+        "category": "complex"
+      }
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/Affinity_vFW_TD.json b/test/policy-local-files/new_policies/Affinity_vFW_TD.json
new file mode 100644 (file)
index 0000000..53bb31b
--- /dev/null
@@ -0,0 +1,31 @@
+{
+  "OSDF_FRANKFURT.Affinity_vFW_TD": {
+    "type": "onap.policies.optimization.AffinityPolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.Affinity_vFW_TD",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT",
+        "TD"
+      ],
+      "resources": [
+        "vFW-SINK",
+        "vPGN"
+      ],
+      "geography": [
+        "US",
+        "INTERNATIONAL"
+      ],
+      "identity": "affinity_vFW_TD",
+      "applicableResources": "any",
+      "affinityProperties": {
+        "qualifier": "same",
+        "category": "region"
+      }
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/Capacity_vGMuxInfra.json b/test/policy-local-files/new_policies/Capacity_vGMuxInfra.json
new file mode 100644 (file)
index 0000000..1d6d26d
--- /dev/null
@@ -0,0 +1,32 @@
+{
+  "OSDF_FRANKFURT.Capacity_vGMuxInfra": {
+    "type": "onap.policies.optimization.Vim_fit",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.Capacity_vGMuxInfra",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT"
+      ],
+      "services": [
+        "vCPE"
+      ],
+      "resources": [
+        "vGMuxInfra"
+      ],
+      "geography": [
+        "US",
+        "INTERNATIONAL"
+      ],
+      "identity": "capacity_vGMuxInfra",
+      "applicableResources": "any",
+      "capacityProperty": {
+        "controller": "multicloud",
+        "request": "{\"vCPU\": 10, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, \"unit\": \"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\"}, \"unit\": \"GB\"}}"
+      }
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/Capacity_vG_1.json b/test/policy-local-files/new_policies/Capacity_vG_1.json
new file mode 100644 (file)
index 0000000..f07e7bc
--- /dev/null
@@ -0,0 +1,32 @@
+{
+  "OSDF_FRANKFURT.Capacity_vG_1": {
+    "type": "onap.policies.optimization.Vim_fit",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.Capacity_vG_1",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT"
+      ],
+      "services": [
+        "vCPE"
+      ],
+      "resources": [
+        "vG"
+      ],
+      "geography": [
+        "US",
+        "INTERNATIONAL"
+      ],
+      "identity": "capacity_vG",
+      "applicableResources": "any",
+      "capacityProperty": {
+        "controller": "multicloud",
+        "request": "{\"vCPU\": 10, \"Memory\": {\"quantity\": {\"get_param\": \"REQUIRED_MEM\"}, \"unit\": \"GB\"}, \"Storage\": {\"quantity\": {\"get_param\": \"REQUIRED_DISK\"}, \"unit\": \"GB\"}}"
+      }
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/Distance_vGMuxInfra_1.json b/test/policy-local-files/new_policies/Distance_vGMuxInfra_1.json
new file mode 100644 (file)
index 0000000..7de102e
--- /dev/null
@@ -0,0 +1,36 @@
+{
+  "OSDF_FRANKFURT.Distance_vGMuxInfra": {
+    "type": "onap.policies.optimization.DistancePolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.Distance_vGMuxInfra",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [ 
+        "OSDF_FRANKFURT"
+      ],
+      "services": [
+        "vCPE"
+      ],
+      "resources": [
+        "vGMuxInfra"
+      ],
+      "geography": [
+        "US",
+        "INTERNATIONAL"
+      ],
+      "identity": "distance-vGMuxInfra",
+      "applicableResources": "any",
+      "distanceProperties": {
+        "locationInfo": "customer_loc",
+        "distance": {
+          "value": "500",
+          "operator": "<",
+          "unit": "km"
+        }
+      }
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/Distance_vG_1.json b/test/policy-local-files/new_policies/Distance_vG_1.json
new file mode 100644 (file)
index 0000000..dcb45b2
--- /dev/null
@@ -0,0 +1,36 @@
+{
+  "OSDF_FRANKFURT.Distance_vG_1": {
+    "type": "onap.policies.optimization.DistancePolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.Distance_vG_1",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT" 
+      ],
+      "services": [
+        "vCPE"
+      ],
+      "resources": [
+        "vG"
+      ],
+      "geography": [
+        "US",
+        "INTERNATIONAL"
+      ],
+      "identity": "distance-vG",
+      "applicableResources": "any",
+      "distanceProperties": {
+        "locationInfo": "customer_loc",
+        "distance": {
+          "value": "1500",
+          "operator": "<",
+          "unit": "km"
+        }
+      }
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/Placement_Optimization_1.json b/test/policy-local-files/new_policies/Placement_Optimization_1.json
new file mode 100644 (file)
index 0000000..b3efa64
--- /dev/null
@@ -0,0 +1,67 @@
+{
+  "OSDF_FRANKFURT.Placement_optimization_1": {
+    "type": "onap.policies.optimization.OptimizationPolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.Placement_optimization_1",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT"
+      ],
+      "services": [
+        "vCPE"
+      ],
+      "resources": [
+        "vG",
+        "vGMuxInfra"
+      ],
+      "geography": [
+        "US",
+        "INTERNATIONAL"
+      ],
+      "identity": "optimization",
+      "objective": "minimize",
+      "objectiveParameter": {
+            "parameterAttributes": [
+                {
+                    "resources": ["vGMuxInfra"],
+                    "customerLocationInfo": "customer_loc",
+                    "parameter": "distance",
+                    "weight": "1",
+                    "operator": "product"
+                },
+                {
+                    "resources": ["vG"],
+                    "customerLocationInfo": "customer_loc",
+                    "parameter": "distance",
+                    "weight": "1",
+                    "operator": "product"
+                },
+                {
+                    "resources": ["vG"],
+                    "parameter": "hpa_score",
+                    "weight": "200",
+                    "operator": "product"
+                },
+                {
+                    "resources": ["vFW"],
+                    "customerLocationInfo": "customer_loc",
+                    "parameter": "distance",
+                    "weight": "100",
+                    "operator": "product"
+                },
+                {
+                    "resources": ["vFW"],
+                    "parameter": "hpa_score",
+                    "weight": "200",
+                    "operator": "product"
+                }
+            ],
+            "operator": "sum"
+        }
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/QueryPolicy_vCPE.json b/test/policy-local-files/new_policies/QueryPolicy_vCPE.json
new file mode 100644 (file)
index 0000000..1a8d205
--- /dev/null
@@ -0,0 +1,38 @@
+{
+  "OSDF_FRANKFURT.queryPolicy_vCPE": {
+    "type": "onap.policies.optimization.QueryPolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.queryPolicy_vCPE",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT"
+      ],
+      "services": [
+        "vCPE"
+      ],
+      "resources": [
+        "vGMuxInfra",
+        "vG"
+      ],
+      "geography": [
+        "US",
+        "INTERNATIONAL"
+      ],
+      "identity": "vCPE_Query_Policy",
+      "queryProperties": [
+        {
+          "attribute": "customerLatitude",
+          "attribute_location": "customerLatitude"
+        },
+        {
+          "attribute": "customerLongitude",
+          "attribute_location": "customerLongitude"
+        }
+      ]
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/QueryPolicy_vCPE_2.json b/test/policy-local-files/new_policies/QueryPolicy_vCPE_2.json
new file mode 100644 (file)
index 0000000..7a4d227
--- /dev/null
@@ -0,0 +1,55 @@
+{
+  "OSDF_FRANKFURT.queryPolicy_vCPE": {
+    "type": "onap.policies.optimization.QueryPolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.queryPolicy_vCPE",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT"
+      ],
+      "services": [
+        "vCPE"
+      ],
+      "resources": [
+        "vGMuxInfra",
+        "vG"
+      ],
+      "geography": [
+        "US",
+        "INTERNATIONAL"
+      ],
+      "identity": "vCPE_Query_Policy",
+      "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": 1.1
+        },
+        {
+          "attribute": "customerLongitude",
+          "attribute_location": "customerLongitude",
+          "value": 2.2
+        }
+      ]
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/QueryPolicy_vFW_TD.json b/test/policy-local-files/new_policies/QueryPolicy_vFW_TD.json
new file mode 100644 (file)
index 0000000..1a6eb21
--- /dev/null
@@ -0,0 +1,47 @@
+{
+  "OSDF_FRANKFURT.queryPolicy_vFW_TD": {
+    "type": "onap.policies.optimization.QueryPolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.queryPolicy_vFW_TD",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT"
+      ],
+      "services": [
+        "vFW_TD"
+      ],
+      "resources": [
+        "vFW-SINK",
+        "vPGN"
+      ],
+      "geography": [
+        "US"
+      ],
+      "identity": "vFW_TD_Query_Policy",
+      "queryProperties": [
+        {
+          "attribute": "chosen_region",
+          "attribute_location": "chosenRegion"
+        },
+        {
+          "attribute": "chosen_customer_id",
+          "attribute_location": "chosenCustomerId"
+        },
+        {
+          "attribute": "customerLatitude",
+          "attribute_location": "customerLatitude",
+          "value": 1.1
+        },
+        {
+          "attribute": "customerLongitude",
+          "attribute_location": "customerLongitude",
+          "value": 2.2
+        }
+      ]
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/hpa_policy_vGMuxInfra_1.json b/test/policy-local-files/new_policies/hpa_policy_vGMuxInfra_1.json
new file mode 100644 (file)
index 0000000..c233c5f
--- /dev/null
@@ -0,0 +1,231 @@
+{
+  "OSDF_FRANKFURT.hpa_policy_vGMuxInfra_1": {
+    "type": "onap.policies.optimization.HpaPolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.hpa_policy_vGMuxInfra_1",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT" 
+      ],
+      "services": [
+        "vCPE"
+      ],
+      "resources": [
+        "vGMuxInfra"
+      ],
+      "geography": [
+        "US",
+        "INTERNATIONAL"
+      ],
+      "identity": "hpa-vGMuxInfra",
+      "flavorFeatures": [
+        {
+          "id": "vgmux_1",
+          "type": "vnfc",
+          "directives": [
+            {
+              "type": "flavor_directives",
+              "attributes": [
+                {
+                  "attribute_name": "flavor_label_vm_01",
+                  "attribute_value": ""
+                }
+              ]
+            }
+          ],
+          "flavorProperties": [
+           {  
+              "hpa-feature" : "cpuTopology",
+              "mandatory" : "True",
+              "architecture": "generic",
+              "directives": [],
+              "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",
+              "directives": [],
+              "hpa-feature-attributes": [
+                {
+                  "hpa-attribute-key": "numVirtualCpu",
+                  "hpa-attribute-value": 6,
+                  "operator": [
+                    "="
+                  ],
+                  "unit": ""
+                },
+                {
+                  "hpa-attribute-key": "virtualMemSize",
+                  "hpa-attribute-value": 6,
+                  "operator": [
+                    "="
+                  ],
+                  "unit": ""
+                }
+              ]
+            },
+            {
+              "hpa-feature": "ovsDpdk",
+              "mandatory": false,
+              "score": 3,
+              "architecture": "generic",
+              "directives": [],
+              "hpa-feature-attributes": [
+                {
+                  "hpa-attribute-key": "dataProcessingAccelerationLibrary",
+                  "hpa-attribute-value": "ovsDpdk_version",
+                  "operator": [
+                    "="
+                  ],
+                  "unit": ""
+                }
+              ]
+            },
+            {
+              "hpa-feature": "cpuInstructionSetExtensions",
+              "mandatory": true,
+              "architecture": "INTEL-64",
+              "directives": [],
+              "hpa-feature-attributes": [
+                {
+                  "hpa-attribute-key": "instructionSetExtensions",
+                  "hpa-attribute-value": [
+                    "<CPUINST>",
+                    "<CPUINST>"
+                  ],
+                  "operator": [
+                    "ALL"
+                  ],
+                  "unit": ""
+                }
+              ]
+            }
+          ]
+        },
+        {
+          "id": "vgmux_2",
+          "type": "vnfc",
+          "directives": [
+            {
+              "type": "flavor_directives",
+              "attributes": [
+                {
+                  "attribute_name": "flavor_label_vm_02",
+                  "attribute_value": ""
+                }
+              ]
+            }
+          ],
+          "flavorProperties":[
+            {
+              "hpa-feature" : "cpuPinningy",
+              "mandatory" : "True",
+              "architecture": "generic",
+              "directives": [],
+              "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",
+              "directives": [],
+              "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",
+              "directives": [],
+              "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" : "pciePassthrough",
+              "mandatory" : "True",
+              "architecture": "generic",
+              "directives": [],
+              "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": ""}
+              ]
+            }
+]
+        },
+        {
+          "id": "vgmux_3",
+          "type": "vnfc",
+          "directives": [
+            {
+              "type": "flavor_directives",
+              "attributes": [
+                {
+                  "attribute_name": "flavor_label_vm_03",
+                  "attribute_value": ""
+                }
+              ]
+            }
+          ],
+          "flavorProperties":[
+            {
+              "hpa-feature" : "numa",
+              "mandatory" : "False",
+              "score" : "5",
+              "architecture": "generic",
+              "directives": [],
+              "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",
+              "directives": [],
+              "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",
+              "directives": [],
+              "hpa-feature-attributes": [
+                 {"hpa-attribute-key": "memoryPageSize", "hpa-attribute-value": "<MEMORYPAGESIZE>", "operator": "=", "unit": ""}
+              ]
+            }
+          ]
+        }
+      ]
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/hpa_policy_vG_1.json b/test/policy-local-files/new_policies/hpa_policy_vG_1.json
new file mode 100644 (file)
index 0000000..4f9a7b4
--- /dev/null
@@ -0,0 +1,231 @@
+{
+  "OSDF_FRANKFURT.hpa_policy_vG_1": {
+    "type": "onap.policies.optimization.HpaPolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.hpa_policy_vG_1",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT" 
+      ],
+      "services": [
+        "vCPE"
+      ],
+      "resources": [
+        "vG"
+      ],
+      "geography": [
+        "US",
+        "INTERNATIONAL"
+      ],
+      "identity": "hpa-vG",
+      "flavorFeatures": [
+        {
+          "id": "vg_1",
+          "type": "vnfc",
+          "directives": [
+            {
+              "type": "flavor_directives",
+              "attributes": [
+                {
+                  "attribute_name": "flavor_label_vm_01",
+                  "attribute_value": ""
+                }
+              ]
+            }
+          ],
+          "flavorProperties": [
+           {  
+              "hpa-feature" : "cpuTopology",
+              "mandatory" : "True",
+              "architecture": "generic",
+              "directives": [],
+              "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",
+              "directives": [],
+              "hpa-feature-attributes": [
+                {
+                  "hpa-attribute-key": "numVirtualCpu",
+                  "hpa-attribute-value": 6,
+                  "operator": [
+                    "="
+                  ],
+                  "unit": ""
+                },
+                {
+                  "hpa-attribute-key": "virtualMemSize",
+                  "hpa-attribute-value": 6,
+                  "operator": [
+                    "="
+                  ],
+                  "unit": ""
+                }
+              ]
+            },
+            {
+              "hpa-feature": "ovsDpdk",
+              "mandatory": false,
+              "score": 3,
+              "architecture": "generic",
+              "directives": [],
+              "hpa-feature-attributes": [
+                {
+                  "hpa-attribute-key": "dataProcessingAccelerationLibrary",
+                  "hpa-attribute-value": "ovsDpdk_version",
+                  "operator": [
+                    "="
+                  ],
+                  "unit": ""
+                }
+              ]
+            },
+            {
+              "hpa-feature": "cpuInstructionSetExtensions",
+              "mandatory": true,
+              "architecture": "INTEL-64",
+              "directives": [],
+              "hpa-feature-attributes": [
+                {
+                  "hpa-attribute-key": "instructionSetExtensions",
+                  "hpa-attribute-value": [
+                    "<CPUINST>",
+                    "<CPUINST>"
+                  ],
+                  "operator": [
+                    "ALL"
+                  ],
+                  "unit": ""
+                }
+              ]
+            }
+          ]
+        },
+        {
+          "id": "vg_2",
+          "type": "vnfc",
+          "directives": [
+            {
+              "type": "flavor_directives",
+              "attributes": [
+                {
+                  "attribute_name": "flavor_label_vm_02",
+                  "attribute_value": ""
+                }
+              ]
+            }
+          ],
+          "flavorProperties":[
+            {
+              "hpa-feature" : "cpuPinningy",
+              "mandatory" : "True",
+              "architecture": "generic",
+              "directives": [],
+              "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",
+              "directives": [],
+              "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",
+              "directives": [],
+              "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" : "pciePassthrough",
+              "mandatory" : "True",
+              "architecture": "generic",
+              "directives": [],
+              "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": ""}
+              ]
+            }
+]
+        },
+        {
+          "id": "vg_3",
+          "type": "vnfc",
+          "directives": [
+            {
+              "type": "flavor_directives",
+              "attributes": [
+                {
+                  "attribute_name": "flavor_label_vm_03",
+                  "attribute_value": ""
+                }
+              ]
+            }
+          ],
+          "flavorProperties":[
+            {
+              "hpa-feature" : "numa",
+              "mandatory" : "False",
+              "score" : "5",
+              "architecture": "generic",
+              "directives": [],
+              "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",
+              "directives": [],
+              "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",
+              "directives": [],
+              "hpa-feature-attributes": [
+                 {"hpa-attribute-key": "memoryPageSize", "hpa-attribute-value": "<MEMORYPAGESIZE>", "operator": "=", "unit": ""}
+              ]
+            }
+          ]
+        }
+      ]
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/meta-valid-policies.txt b/test/policy-local-files/new_policies/meta-valid-policies.txt
new file mode 100644 (file)
index 0000000..7f5a007
--- /dev/null
@@ -0,0 +1,16 @@
+Affinity_vCPE_1.json
+Capacity_vGMuxInfra.json
+Capacity_vG_1.json
+Distance_vGMuxInfra_1.json
+Distance_vG_1.json
+Placement_Optimization_1.json
+QueryPolicy_vCPE.json
+QueryPolicy_vCPE_2.json
+hpa_policy_vGMuxInfra_1.json
+hpa_policy_vG_1.json
+vnfPolicy_vG.json
+vnfPolicy_vGMuxInfra.json
+QueryPolicy_vFW_TD.json
+vnfPolicy_vFW_TD.json
+vnfPolicy_vPGN_TD.json
+Affinity_vFW_TD.json
diff --git a/test/policy-local-files/new_policies/subscriber_policy_vCPE.json b/test/policy-local-files/new_policies/subscriber_policy_vCPE.json
new file mode 100644 (file)
index 0000000..305ce58
--- /dev/null
@@ -0,0 +1,32 @@
+{
+  "OSDF_FRANKFURT.SubscriberPolicy_v1": {
+    "type": "onap.policies.optimization.SubscriberPolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.SubscriberPolicy_v1",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT"
+      ],
+      "services": [
+        "vCPE"
+      ],
+      "identity": "subscriber_vCPE",
+      "properties": {
+        "subscriberName": [
+          "subscriber_x",
+          "subscriber_y"
+        ],
+        "subscriberRole": [
+          "PVT Homing"
+        ],
+        "provStatus": [
+          "CAPPED"
+        ]
+      }
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/vnfPolicy_vFW_TD.json b/test/policy-local-files/new_policies/vnfPolicy_vFW_TD.json
new file mode 100644 (file)
index 0000000..387ed56
--- /dev/null
@@ -0,0 +1,47 @@
+{
+  "OSDF_FRANKFURT.vnfPolicy_vFW_TD": {
+    "type": "onap.policies.optimization.VnfPolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.vnfPolicy_vFW_TD",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT",
+        "TD"
+      ],
+      "resources": [
+        "vFW-SINK"
+      ],
+      "geography": [
+        "US"
+      ],
+      "identity": "vnf_vFW_TD",
+      "applicableResources": "any",
+      "vnfProperties": [{
+          "inventoryProvider": "aai",
+          "serviceType": "",
+          "inventoryType": "vfmodule",
+          "customerId": {
+              "get_param": "chosen_customer_id"
+          },
+          "equipmentRole": "",
+          "attributes": {
+              "orchestrationStatus": ["active"],
+              "provStatus": "ACTIVE",
+              "cloudRegionId": {
+                  "get_param": "chosen_region"
+              },
+              "service_instance_id": {
+                  "get_param": "service_id"
+              }
+          },
+          "passthroughAttributes": {
+              "td-role": "destination"
+          }
+      }]
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/vnfPolicy_vG.json b/test/policy-local-files/new_policies/vnfPolicy_vG.json
new file mode 100644 (file)
index 0000000..786ffc2
--- /dev/null
@@ -0,0 +1,38 @@
+{
+  "OSDF_FRANKFURT.vnfPolicy_vG": {
+    "type": "onap.policies.optimization.VnfPolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.vnfPolicy_vG",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT"
+      ],
+      "services": [
+        "vCPE"
+      ],
+      "resources": [
+        "vG"
+      ],
+      "geography": [
+        "US",
+        "INTERNATIONAL"
+      ],
+      "identity": "vnf_vG",
+      "applicableResources": "any",
+      "vnfProperties": [
+        {
+          "inventoryProvider": "aai",
+          "serviceType": "",
+          "inventoryType": "cloud",
+          "customerId": "",
+          "orchestrationStatus": "",
+          "equipmentRole": ""
+        }
+      ]
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/vnfPolicy_vGMuxInfra.json b/test/policy-local-files/new_policies/vnfPolicy_vGMuxInfra.json
new file mode 100644 (file)
index 0000000..deb34fd
--- /dev/null
@@ -0,0 +1,38 @@
+{
+  "OSDF_FRANKFURT.vnfPolicy_vGMuxInfra": {
+    "type": "onap.policies.optimization.VnfPolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.vnfPolicy_vGMuxInfra",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT"
+      ],
+      "services": [
+        "vCPE"
+      ],
+      "resources": [
+        "vGMuxInfra"
+      ],
+      "geography": [
+        "US",
+        "INTERNATIONAL"
+      ],
+      "identity": "vnf_vGMuxInfra",
+      "applicableResources": "any",
+      "vnfProperties": [
+        {
+          "inventoryProvider": "aai",
+          "serviceType": "vGMuxInfra-xx",
+          "inventoryType": "service",
+          "customerId": "SDN-ETHERNET-INTERNET",
+          "orchestrationStatus": "",
+          "equipmentRole": ""
+        }
+      ]
+    }
+  }
+}
diff --git a/test/policy-local-files/new_policies/vnfPolicy_vPGN_TD.json b/test/policy-local-files/new_policies/vnfPolicy_vPGN_TD.json
new file mode 100644 (file)
index 0000000..c441156
--- /dev/null
@@ -0,0 +1,52 @@
+{
+  "OSDF_FRANKFURT.vnfPolicy_vPGN_TD": {
+    "type": "onap.policies.optimization.VnfPolicy",
+    "version": "1.0.0",
+    "type_version": "1.0.0",
+    "metadata": {
+      "policy-id": "OSDF_FRANKFURT.vnfPolicy_vPGN_TD",
+      "policy-version": 1
+    },
+    "properties": {
+      "scope": [
+        "OSDF_FRANKFURT",
+        "TD"
+      ],
+      "resources": [
+        "vPGN"
+      ],
+      "geography": [
+        "US"
+      ],
+      "identity": "vnf_vPGN_TD",
+      "applicableResources": "any",
+      "vnfProperties": [
+        {
+          "inventoryProvider": "aai",
+          "serviceType": "",
+          "inventoryType": "vfmodule",
+          "customerId": {
+            "get_param": "chosen_customer_id"
+          },
+          "equipmentRole": "",
+          "unique": "False",
+          "attributes": {
+            "orchestrationStatus": [
+              "active"
+            ],
+            "provStatus": "ACTIVE",
+            "cloudRegionId": {
+              "get_param": "chosen_region"
+            },
+            "service_instance_id": {
+              "get_param": "service_id"
+            }
+          },
+          "passthroughAttributes": {
+            "td-role": "anchor"
+          }
+        }
+      ]
+    }
+  }
+}
index 07cb3bb..1be0a4b 100644 (file)
@@ -30,7 +30,7 @@ class TestConductorApiBuilder(unittest.TestCase):
         self.main_dir = ""
         self.conductor_api_template = self.main_dir + "apps/placement/templates/conductor_interface.json"
         self.local_config_file = self.main_dir + "config/common_config.yaml"
-        policy_data_path = self.main_dir + "test/policy-local-files"                 # "test/policy-local-files"
+        policy_data_path = self.main_dir + "test/policy-local-files/new_policies"                 # "test/policy-local-files"
 
         valid_policies_list_file = policy_data_path + '/' + 'meta-valid-policies.txt'
         valid_policies_files = local_policies.get_policy_names_from_file(valid_policies_list_file)
index e7e8eab..4358eeb 100644 (file)
@@ -33,7 +33,7 @@ class TestPolicyCalls(unittest.TestCase):
     def setUp(self):
         main_dir = ""
         parameter_data_file = main_dir + "test/placement-tests/request.json"
-        policy_data_path = main_dir + "test/policy-local-files/"
+        policy_data_path = main_dir + "test/policy-local-files/new_policies/"
         local_config_file = main_dir + "config/common_config.yaml"
 
         valid_policies_list_file = policy_data_path + '/' + 'meta-valid-policies.txt'
@@ -63,7 +63,7 @@ class TestPolicyCalls(unittest.TestCase):
                                                       "test/placement-tests/policy_response2.json")
         with patch('osdf.adapters.policy.interface.policy_api_call', return_value=policy_response):
             policy_list = interface.remote_api(req_json, osdf_config, service_type="placement")
-            policy_type = [policy['content']['policyType'] for policy in policy_list]
+            policy_type = [policy[list(policy.keys())[0]]['type'] for policy in policy_list]
             #self.assertEqual(set(policy_type), {'hpaPolicy', 'SubscriberPolicy'})
 
     def failure_policy_call(self, req_json_file, resp_json_file):
@@ -99,7 +99,8 @@ class TestPolicyCalls(unittest.TestCase):
         req_json = "./test/placement-tests/request.json"
         req_json = json.loads(open(req_json).read())
         # need to run this only on vnf policies
-        vnf_policies = [x for x in self.policies if x["content"]["policyType"] == "vnfPolicy"]
+        vnf_policies = [x for x in self.policies if x[list(x.keys())[0]]["type"] ==
+                        "onap.policies.optimization.VnfPolicy"]
         gen_demands = translation.gen_demands(req_json, vnf_policies)
         for action in req_json['placementInfo']['placementDemands']:
             actions_list.append(action['resourceModuleName'])
index a7a4d88..06dfbf9 100644 (file)
@@ -25,7 +25,7 @@ class TestGetOptQueryData(unittest.TestCase):
     def test_get_opt_query_data(self):
         main_dir = ""
         parameter_data_file = main_dir + "test/placement-tests/request.json"
-        policy_data_path = main_dir + "test/policy-local-files/"
+        policy_data_path = main_dir + "test/policy-local-files/new_policies/"
 
         query_policy_data_file = ["QueryPolicy_vCPE.json"]
         request_json = json.loads(open(parameter_data_file).read())
@@ -37,7 +37,7 @@ class TestGetOptQueryData(unittest.TestCase):
     def test_get_opt_query_data_vfmod(self):
         main_dir = ""
         parameter_data_file = main_dir + "test/placement-tests/request_vfmod.json"
-        policy_data_path = main_dir + "test/policy-local-files/"
+        policy_data_path = main_dir + "test/policy-local-files/new_policies/"
 
         query_policy_data_file = ["QueryPolicy_vFW_TD.json"]
         request_json = json.loads(open(parameter_data_file).read())