Fix to support multiple inventory providers 51/113351/1
authorkrishnaa96 <krishna.moorthy6@wipro.com>
Mon, 28 Sep 2020 07:41:41 +0000 (13:11 +0530)
committerkrishnaa96 <krishna.moorthy6@wipro.com>
Wed, 30 Sep 2020 07:09:00 +0000 (12:39 +0530)
Add generator plugin to extensions
Aggregate candidate from multiple inv providers
Limit no of candidates generated by generator

Issue-ID: OPTFRA-854
Signed-off-by: krishnaa96 <krishna.moorthy6@wipro.com>
Change-Id: I536a62e8616b1b4d9261d9d08540a8db5104af23

12 files changed:
conductor.conf
conductor/conductor/data/plugins/inventory_provider/candidates/__init__.py [new file with mode: 0644]
conductor/conductor/data/plugins/inventory_provider/candidates/slice_profiles_candidate.py
conductor/conductor/data/plugins/inventory_provider/generator.py
conductor/conductor/data/plugins/inventory_provider/utils/__init__.py [new file with mode: 0644]
conductor/conductor/data/service.py
conductor/conductor/tests/unit/data/plugins/inventory_provider/gen_demand_list.json
conductor/conductor/tests/unit/data/plugins/inventory_provider/generated_candidates.json
conductor/conductor/tests/unit/data/plugins/inventory_provider/resolved_demands_gen.json
conductor/conductor/tests/unit/data/plugins/inventory_provider/test_candidates.py
conductor/conductor/tests/unit/data/plugins/inventory_provider/test_generator.py
conductor/setup.cfg

index 7b04ec7..e2e2c66 100755 (executable)
@@ -350,7 +350,7 @@ concurrent = true
 #
 
 # Extensions list to use (list value)
-#extensions = aai
+extensions = aai, generator
 
 
 [messaging_server]
diff --git a/conductor/conductor/data/plugins/inventory_provider/candidates/__init__.py b/conductor/conductor/data/plugins/inventory_provider/candidates/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
index 3e57d64..db10ee5 100644 (file)
@@ -53,31 +53,42 @@ class SliceProfilesCandidate(Candidate):
     def __init__(self, **kwargs):
         super().__init__(kwargs["info"])
         self.subnet_requirements = kwargs["subnet_requirements"]
+        if "slice_requirements" in kwargs:
+            self.slice_requirements = kwargs["slice_requirements"]
+        else:
+            self.slice_requirements = None
+        self.other = kwargs["default_fields"]
 
     def convert_nested_dict_to_dict(self):
         nested_dict = self.__dict__
 
-        slice_requirements = self.get_slice_requirements()
+        if not self.slice_requirements:
+            self.slice_requirements = get_slice_requirements(self.subnet_requirements)
 
         slice_profile_candidate = copy.deepcopy(nested_dict)
+        slice_profile_candidate.pop("slice_requirements")
         slice_profile_candidate.pop("subnet_requirements")
-        slice_profile_candidate.update(slice_requirements)
+        slice_profile_candidate.pop("other")
+        slice_profile_candidate.update(self.slice_requirements)
         for subnet, slice_profile in self.subnet_requirements.items():
             subnet_req = {f'{subnet}_{key}': value for key, value in slice_profile.items()}
             slice_profile_candidate.update(subnet_req)
 
+        slice_profile_candidate.update(self.other)
+
         return slice_profile_candidate
 
-    def get_slice_requirements(self):
-        slice_requirements_keys = set()
-        for slice_profile in self.subnet_requirements.values():
-            slice_requirements_keys.update(slice_profile.keys())
 
-        slice_profile_tuples = {}
-        for key in slice_requirements_keys:
-            attributes = []
-            for slice_profile in self.subnet_requirements.values():
-                attributes.append(slice_profile.get(key))
-            slice_profile_tuples[key] = attributes
+def get_slice_requirements(subnet_requirements):
+    slice_requirements_keys = set()
+    for slice_profile in subnet_requirements.values():
+        slice_requirements_keys.update(slice_profile.keys())
+
+    slice_profile_tuples = {}
+    for key in slice_requirements_keys:
+        attributes = []
+        for slice_profile in subnet_requirements.values():
+            attributes.append(slice_profile.get(key))
+        slice_profile_tuples[key] = attributes
 
-        return {attr: ATTRIBUTE_AGGREGATION[attr](values) for attr, values in slice_profile_tuples.items()}
+    return {attr: ATTRIBUTE_AGGREGATION[attr](values) for attr, values in slice_profile_tuples.items()}
index 693b7c7..17fe7a5 100644 (file)
 #
 
 import itertools
+from operator import eq
+from operator import ge
+from operator import le
 import uuid
 
 from oslo_log import log
 
 from conductor.data.plugins.inventory_provider import base
 from conductor.data.plugins.inventory_provider.candidates.candidate import Candidate
+from conductor.data.plugins.inventory_provider.candidates.slice_profiles_candidate import get_slice_requirements
 from conductor.data.plugins.inventory_provider.candidates.slice_profiles_candidate import SliceProfilesCandidate
 
 LOG = log.getLogger(__name__)
 
 
+OPERATORS = {'gte': ge,
+             'lte': le,
+             'eq': eq}
+
+
 class Generator(base.InventoryProviderBase):
 
     def __init__(self):
         """Initialize variables"""
         pass
 
+    def initialize(self):
+        pass
+
     def name(self):
         """Return human-readable name."""
         return "generator"
@@ -48,22 +60,26 @@ class Generator(base.InventoryProviderBase):
                 inventory_type = requirement.get('inventory_type').lower()
                 candidate_uniqueness = requirement.get('unique', 'true')
                 filtering_attributes = requirement.get('filtering_attributes')
+                default_fields = requirement.get('default_attributes')
                 resolved_demands[name].extend(self.generate_candidates(inventory_type,
                                                                        filtering_attributes,
-                                                                       candidate_uniqueness))
+                                                                       candidate_uniqueness,
+                                                                       default_fields))
 
         return resolved_demands
 
-    def generate_candidates(self, inventory_type, filtering_attributes, candidate_uniqueness):
+    def generate_candidates(self, inventory_type, filtering_attributes, candidate_uniqueness, default_fields):
 
         if inventory_type == "slice_profiles":
-            return self.generate_slice_profile_candidates(filtering_attributes, inventory_type, candidate_uniqueness)
+            return self.generate_slice_profile_candidates(filtering_attributes, inventory_type,
+                                                          candidate_uniqueness, default_fields)
         else:
             LOG.debug("No functionality implemented for \
                       generating candidates for inventory_type {}".format(inventory_type))
             return []
 
-    def generate_slice_profile_candidates(self, filtering_attributes, inventory_type, candidate_uniqueness):
+    def generate_slice_profile_candidates(self, filtering_attributes, inventory_type,
+                                          candidate_uniqueness, default_fields):
         """Generates a list of slice profile candidate based on the filtering attributes,
 
            A sample filtering attribute is given below
@@ -76,7 +92,7 @@ class Generator(base.InventoryProviderBase):
             generates combination of slice profile tuples from the each subnet.
         """
         subnet_combinations = {}
-        for subnet, attributes in filtering_attributes.items():
+        for subnet, attributes in filtering_attributes['subnets'].items():
             attribute_names, attribute_combinations = generate_combinations(attributes)
             subnet_combinations[subnet] = organize_combinations(attribute_names, attribute_combinations)
 
@@ -84,14 +100,24 @@ class Generator(base.InventoryProviderBase):
         organized_combinations = organize_combinations(subnet_names, slice_profile_combinations)
         candidates = []
         for combination in organized_combinations:
-            info = Candidate.build_candidate_info(self.name(), inventory_type, 1.0, candidate_uniqueness,
-                                                  str(uuid.uuid4()))
-            candidate = SliceProfilesCandidate(info=info, subnet_requirements=combination)
-            candidates.append(candidate.convert_nested_dict_to_dict())
+            if is_valid(get_slice_requirements(combination), filtering_attributes['service_profile']):
+                info = Candidate.build_candidate_info(self.name(), inventory_type, 1.0, candidate_uniqueness,
+                                                      str(uuid.uuid4()))
+                candidate = SliceProfilesCandidate(info=info, subnet_requirements=combination,
+                                                   default_fields=default_fields)
+                converted_candidate = candidate.convert_nested_dict_to_dict()
+                candidates.append(converted_candidate)
 
         return candidates
 
 
+def is_valid(converted_candidate, service_profile):
+    for attr, attr_value in service_profile.items():
+        if not OPERATORS[attr_value['operator']](converted_candidate[attr], attr_value['value']):
+            return False
+    return True
+
+
 def generate_combinations(attributes):
     """Generates all combination of the given attribute values.
 
diff --git a/conductor/conductor/data/plugins/inventory_provider/utils/__init__.py b/conductor/conductor/data/plugins/inventory_provider/utils/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
index 67d3c8c..48f3305 100644 (file)
@@ -632,7 +632,10 @@ class DataEndpoint(object):
             demands, plan_info, triage_translator_data
         )
         if results and len(results) > 0:
-            resolved_demands = results[0]
+            if len(results) > 1:
+                resolved_demands = self.get_resolved_demands_from_result(results)
+            else:
+                resolved_demands = results[0]
             if self.triage_data_trans['plan_id']== None :
                 self.triage_data_trans['plan_name'] = triage_translator_data['plan_name']
                 self.triage_data_trans['plan_id'] = triage_translator_data['plan_id']
@@ -655,6 +658,14 @@ class DataEndpoint(object):
                              'trans': self.triage_data_trans},
                 'error': error}
 
+    def get_resolved_demands_from_result(self, results):
+        resolved_demands = {de: [] for de in results[0].keys()}
+        for result in results:
+            for demand, candidates in result.items():
+                resolved_demands[demand].extend(candidates)
+        LOG.info('resolved_demands: {}'.format(str(resolved_demands)))
+        return resolved_demands
+
     def resolve_location(self, ctx, arg):
 
         log_util.setLoggerFilter(LOG, ctx.get('keyspace'), ctx.get('plan_id'))
index cfe5a78..a21b0ac 100644 (file)
@@ -6,6 +6,9 @@
                 "global-customer-id": "customer-123",
                 "service-type": "TEST"
             },
+            "default_attributes": {
+                "creation_cost": 0.9
+            },
             "inventory_provider": "generator",
             "inventory_type": "nssi"
         }
     "urllc": [
         {
             "filtering_attributes": {
-                "core": {
-                    "latency": {
-                        "max": 20,
-                        "min": 15,
-                        "steps": 1
-                    },
-                    "reliability": {
-                        "values": [
-                            99.99
-                        ]
+                "service_profile": {
+                                        "latency": {"value": 20, "operator": "lte"},
+                                        "reliability": {"value": 99.99, "operator": "gte"}
+                                  },
+                "subnets": {
+                    "core": {
+                        "latency": {
+                            "max": 20,
+                            "min": 15,
+                            "steps": 1
+                        },
+                        "reliability": {
+                            "values": [
+                                99.99
+                            ]
+                        }
                     }
                 }
             },
+            "default_attributes": {
+                "creation_cost": 0.9
+            },
             "inventory_provider": "generator",
             "inventory_type": "slice_profiles",
             "unique": "true"
         },
         {
             "filtering_attributes": {
-                "core": {
-                    "latency": {
-                        "max": 20,
-                        "min": 15,
-                        "steps": 1
+                "service_profile": {
+                                        "latency": {"value": 20, "operator": "lte"},
+                                        "reliability": {"value": 99.99, "operator": "gte"}
+                                  },
+                "subnets": {
+                    "core": {
+                        "latency": {
+                            "max": 20,
+                            "min": 15,
+                            "steps": 1
+                        },
+                        "reliability": {
+                            "values": [
+                                99.99
+                            ]
+                        }
                     },
-                    "reliability": {
-                        "values": [
-                            99.99
-                        ]
-                    }
-                },
-                "ran": {
-                    "latency": {
-                        "max": 20,
-                        "min": 18,
-                        "steps": 1
-                    },
-                    "reliability": {
-                        "values": [
-                            99.99
-                        ]
+                    "ran": {
+                        "latency": {
+                            "max": 20,
+                            "min": 18,
+                            "steps": 1
+                        },
+                        "reliability": {
+                            "values": [
+                                99.99
+                            ]
+                        }
                     }
                 }
             },
+            "default_attributes": {
+                "creation_cost": 0.9
+            },
             "inventory_provider": "generator",
             "inventory_type": "slice_profiles",
             "unique": "true"
         }
     ]
 }
-
index d4c76f0..135b254 100644 (file)
 [
     {
-        "candidate_id": "824df02b-f5eb-4117-bd7b-47262f7834b3",
-        "core_latency": 15,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
+        "uniqueness": "true",
+        "cost": 1.0,
         "latency": 25,
-        "ran_coverage_area_ta_list": "City: Chennai",
+        "reliability": 99.99,
+        "coverage_area_ta_list": "City: Chennai",
+        "core_latency": 15,
+        "core_reliability": 99.99,
         "ran_latency": 10,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "9f61ed37-85b4-4735-bd27-a93fef568ec4",
-        "core_latency": 15,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
+        "uniqueness": "true",
+        "cost": 1.0,
         "latency": 26,
-        "ran_coverage_area_ta_list": "City: Chennai",
+        "reliability": 99.99,
+        "coverage_area_ta_list": "City: Chennai",
+        "core_latency": 15,
+        "core_reliability": 99.99,
         "ran_latency": 11,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "0c3422c5-2ffb-4b90-8b56-a720b72eff41",
-        "core_latency": 15,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
+        "uniqueness": "true",
+        "cost": 1.0,
         "latency": 27,
-        "ran_coverage_area_ta_list": "City: Chennai",
+        "reliability": 99.99,
+        "coverage_area_ta_list": "City: Chennai",
+        "core_latency": 15,
+        "core_reliability": 99.99,
         "ran_latency": 12,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "c52f6046-e4eb-426a-a8bc-e48e333bbcde",
-        "core_latency": 15,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
+        "uniqueness": "true",
+        "cost": 1.0,
         "latency": 28,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 13,
-        "ran_reliability": 99.99,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "3bd5d9de-e402-4ef3-96ff-d50216925e61",
+        "coverage_area_ta_list": "City: Chennai",
         "core_latency": 15,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 29,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 14,
+        "ran_latency": 13,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "3631066c-c242-431e-a409-dd03a8559926",
-        "core_latency": 15,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
-        "latency": 30,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 15,
-        "ran_reliability": 99.99,
+        "uniqueness": "true",
+        "cost": 1.0,
+        "latency": 29,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "6e5f0c89-95de-4fd2-bd61-4bae1a6f4507",
+        "coverage_area_ta_list": "City: Chennai",
         "core_latency": 15,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 31,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 16,
+        "ran_latency": 14,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "8916ea61-3102-4ed1-a53a-c23a7df5b7d8",
-        "core_latency": 15,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
-        "latency": 32,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 17,
-        "ran_reliability": 99.99,
+        "uniqueness": "true",
+        "cost": 1.0,
+        "latency": 30,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "c151fc74-5602-42c7-9d88-68b4b2ce7a92",
+        "coverage_area_ta_list": "City: Chennai",
         "core_latency": 15,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 33,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 18,
+        "ran_latency": 15,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "25c2d09a-45ca-49eb-ba08-70cc42bc8eb0",
-        "core_latency": 15,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
-        "latency": 34,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 19,
-        "ran_reliability": 99.99,
+        "uniqueness": "true",
+        "cost": 1.0,
+        "latency": 26,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "86555fc1-d158-4739-8e4a-e34f1c01c9b9",
+        "coverage_area_ta_list": "City: Chennai",
         "core_latency": 16,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 26,
-        "ran_coverage_area_ta_list": "City: Chennai",
         "ran_latency": 10,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "31a74478-bd76-4ffc-98eb-e20adc01c4d5",
-        "core_latency": 16,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
+        "uniqueness": "true",
+        "cost": 1.0,
         "latency": 27,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 11,
-        "ran_reliability": 99.99,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "948ab1a7-06c0-4f34-ae34-e5df1f5dbcfe",
+        "coverage_area_ta_list": "City: Chennai",
         "core_latency": 16,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 28,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 12,
+        "ran_latency": 11,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "1c7a4c2b-1fce-4d58-8a7e-fc5d1017608a",
-        "core_latency": 16,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
-        "latency": 29,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 13,
-        "ran_reliability": 99.99,
+        "uniqueness": "true",
+        "cost": 1.0,
+        "latency": 28,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "b956dce2-a898-4e9c-aa02-9ef5082028c1",
+        "coverage_area_ta_list": "City: Chennai",
         "core_latency": 16,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 30,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 14,
+        "ran_latency": 12,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "9fa2871e-f7fb-443b-be7b-15b2f2ddeb0a",
-        "core_latency": 16,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
-        "latency": 31,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 15,
-        "ran_reliability": 99.99,
+        "uniqueness": "true",
+        "cost": 1.0,
+        "latency": 29,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "aa50050c-bece-4f8a-ab09-cfb928da955b",
+        "coverage_area_ta_list": "City: Chennai",
         "core_latency": 16,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 32,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 16,
+        "ran_latency": 13,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "6a576ba0-3aab-4a53-a318-d850fddc88d5",
-        "core_latency": 16,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
-        "latency": 33,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 17,
-        "ran_reliability": 99.99,
+        "uniqueness": "true",
+        "cost": 1.0,
+        "latency": 30,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "7313812c-1d53-4a82-919b-50db6f9e69f0",
+        "coverage_area_ta_list": "City: Chennai",
         "core_latency": 16,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 34,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 18,
+        "ran_latency": 14,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "2f352c9d-9d0d-4017-a547-80124527c08b",
-        "core_latency": 16,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
-        "latency": 35,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 19,
-        "ran_reliability": 99.99,
+        "uniqueness": "true",
+        "cost": 1.0,
+        "latency": 27,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "fef0e167-3adf-4dd8-8928-05b8eb76f443",
+        "coverage_area_ta_list": "City: Chennai",
         "core_latency": 17,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 27,
-        "ran_coverage_area_ta_list": "City: Chennai",
         "ran_latency": 10,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "af8e0e30-57ee-410f-a6b0-51b5cb45e066",
-        "core_latency": 17,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
+        "uniqueness": "true",
+        "cost": 1.0,
         "latency": 28,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 11,
-        "ran_reliability": 99.99,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "e0d4d686-d248-4eda-9910-0bf3a2c6304f",
-        "core_latency": 17,
-        "core_reliability": 99.99,
-        "cost": 1.0,
         "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 29,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 12,
-        "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "c297f2a0-c2cb-4dbe-9e44-62c1da8b3df2",
         "core_latency": 17,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 30,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 13,
+        "ran_latency": 11,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "d8c247f5-2fc8-4af5-abaf-c86c52795d18",
-        "core_latency": 17,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 31,
         "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 14,
-        "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "75f7a109-6af2-4f58-bbcf-69da15b49746",
-        "core_latency": 17,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
-        "latency": 32,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 15,
-        "ran_reliability": 99.99,
+        "uniqueness": "true",
+        "cost": 1.0,
+        "latency": 29,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "d1e8b1b8-ce5b-4701-95d7-5df12e51c87b",
+        "coverage_area_ta_list": "City: Chennai",
         "core_latency": 17,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 33,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 16,
+        "ran_latency": 12,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "9654aecf-6923-40b8-b4c1-ee5e08d2c50e",
-        "core_latency": 17,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
-        "latency": 34,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 17,
-        "ran_reliability": 99.99,
+        "uniqueness": "true",
+        "cost": 1.0,
+        "latency": 30,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "359ed468-6ed9-4d72-af19-cbf4c20bde2b",
+        "coverage_area_ta_list": "City: Chennai",
         "core_latency": 17,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 35,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 18,
+        "ran_latency": 13,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "0d91e973-ff9a-4d49-ba29-5f40bf3be902",
-        "core_latency": 17,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
-        "latency": 36,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 19,
-        "ran_reliability": 99.99,
+        "uniqueness": "true",
+        "cost": 1.0,
+        "latency": 28,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "b7761dc6-fd27-46ec-abb8-c58a7976514f",
+        "coverage_area_ta_list": "City: Chennai",
         "core_latency": 18,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 28,
-        "ran_coverage_area_ta_list": "City: Chennai",
         "ran_latency": 10,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "24b04d95-649c-4c23-896e-37fb092536c8",
-        "core_latency": 18,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
+        "uniqueness": "true",
+        "cost": 1.0,
         "latency": 29,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 11,
-        "ran_reliability": 99.99,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "39b7a668-7974-4504-b36b-a6fc875ee05c",
-        "core_latency": 18,
-        "core_reliability": 99.99,
-        "cost": 1.0,
         "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 30,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 12,
-        "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "23e4acc0-5414-4b4b-99f8-9669733ca53a",
         "core_latency": 18,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 31,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 13,
+        "ran_latency": 11,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "97f29b0b-b21c-424e-bb02-e35fc0b2e43b",
-        "core_latency": 18,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 32,
         "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 14,
-        "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "2072423a-2b3e-460d-a609-da70602f8f60",
-        "core_latency": 18,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
-        "latency": 33,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 15,
-        "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "8756ea24-7a29-47a4-9c36-55a87b14193c",
-        "core_latency": 18,
-        "core_reliability": 99.99,
+        "uniqueness": "true",
         "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 34,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 16,
-        "ran_reliability": 99.99,
+        "latency": 30,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "5b1332ec-d241-4063-b09b-a71d10e6b65c",
-        "core_latency": 18,
-        "core_reliability": 99.99,
-        "cost": 1.0,
         "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 35,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 17,
-        "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "decce033-4889-476e-be3c-21abbac514fc",
         "core_latency": 18,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 36,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 18,
+        "ran_latency": 12,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "1d00cd28-784c-4c44-b718-a533b09d4d72",
-        "core_latency": 18,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
-        "latency": 37,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 19,
-        "ran_reliability": 99.99,
+        "uniqueness": "true",
+        "cost": 1.0,
+        "latency": 29,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "f0084f21-a268-430a-8642-050aa7e3ad71",
+        "coverage_area_ta_list": "City: Chennai",
         "core_latency": 19,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 29,
-        "ran_coverage_area_ta_list": "City: Chennai",
         "ran_latency": 10,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "669ce118-1e7f-4630-8d72-1a22bc4d3abd",
-        "core_latency": 19,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
+        "uniqueness": "true",
+        "cost": 1.0,
         "latency": 30,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 11,
-        "ran_reliability": 99.99,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "b25a1b05-208b-49a6-9dc5-a65473f81d29",
-        "core_latency": 19,
-        "core_reliability": 99.99,
-        "cost": 1.0,
         "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 31,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 12,
-        "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "776754f3-b197-4b66-bcdd-0a03f7bb3fc6",
         "core_latency": 19,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 32,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 13,
+        "ran_latency": 11,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "d5765567-6bdf-46b9-8167-214e476476c9",
-        "core_latency": 19,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 33,
         "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 14,
-        "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "creation_cost": 0.9
     },
     {
-        "candidate_id": "0494bbe3-adea-4eda-b214-f7b7c7214ce3",
-        "core_latency": 19,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
         "inventory_type": "slice_profiles",
-        "latency": 34,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 15,
-        "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "9f8882c9-c984-4f24-8a98-2a95d82d23aa",
-        "core_latency": 19,
-        "core_reliability": 99.99,
+        "uniqueness": "true",
         "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 35,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 16,
-        "ran_reliability": 99.99,
+        "latency": 30,
         "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "e58afc2f-9579-423f-9680-71bc0fd694b4",
-        "core_latency": 19,
-        "core_reliability": 99.99,
-        "cost": 1.0,
         "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 36,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 17,
-        "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "b06cea8f-8f0e-4762-8f2c-34405c6ee14c",
-        "core_latency": 19,
+        "core_latency": 20,
         "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 37,
-        "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 18,
+        "ran_latency": 10,
         "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
-    },
-    {
-        "candidate_id": "1b22b8be-1324-4f2b-a207-916524ef9a86",
-        "core_latency": 19,
-        "core_reliability": 99.99,
-        "cost": 1.0,
-        "coverage_area_ta_list": "City: Chennai",
-        "inventory_provider": "generator",
-        "inventory_type": "slice_profiles",
-        "latency": 38,
         "ran_coverage_area_ta_list": "City: Chennai",
-        "ran_latency": 19,
-        "ran_reliability": 99.99,
-        "reliability": 99.99,
-        "uniqueness": "true"
+        "creation_cost": 0.9
     }
 ]
index b877cca..ac9c674 100644 (file)
     "embb": [],
     "urllc": [
         {
-            "core_latency": 15,
-            "core_reliability": 99.99,
-            "cost": 1.0,
-            "inventory_provider": "generator",
-            "inventory_type": "slice_profiles",
-            "latency": 15,
-            "reliability": 99.99,
-            "uniqueness": "true"
-        },
-        {
-            "core_latency": 16,
-            "core_reliability": 99.99,
-            "cost": 1.0,
-            "inventory_provider": "generator",
-            "inventory_type": "slice_profiles",
-            "latency": 16,
-            "reliability": 99.99,
-            "uniqueness": "true"
-        },
-        {
-            "core_latency": 17,
-            "core_reliability": 99.99,
-            "cost": 1.0,
-            "inventory_provider": "generator",
-            "inventory_type": "slice_profiles",
-            "latency": 17,
-            "reliability": 99.99,
-            "uniqueness": "true"
-        },
-        {
-            "core_latency": 18,
-            "core_reliability": 99.99,
-            "cost": 1.0,
             "inventory_provider": "generator",
             "inventory_type": "slice_profiles",
-            "latency": 18,
-            "reliability": 99.99,
-            "uniqueness": "true"
-        },
-        {
-            "core_latency": 19,
-            "core_reliability": 99.99,
+            "uniqueness": "true",
             "cost": 1.0,
-            "inventory_provider": "generator",
-            "inventory_type": "slice_profiles",
-            "latency": 19,
             "reliability": 99.99,
-            "uniqueness": "true"
-        },
-        {
+            "latency": 15,
             "core_latency": 15,
             "core_reliability": 99.99,
-            "cost": 1.0,
-            "inventory_provider": "generator",
-            "inventory_type": "slice_profiles",
-            "latency": 33,
-            "ran_latency": 18,
-            "ran_reliability": 99.99,
-            "reliability": 99.99,
-            "uniqueness": "true"
+            "creation_cost": 0.9
         },
         {
-            "core_latency": 15,
-            "core_reliability": 99.99,
-            "cost": 1.0,
             "inventory_provider": "generator",
             "inventory_type": "slice_profiles",
-            "latency": 34,
-            "ran_latency": 19,
-            "ran_reliability": 99.99,
-            "reliability": 99.99,
-            "uniqueness": "true"
-        },
-        {
-            "core_latency": 16,
-            "core_reliability": 99.99,
+            "uniqueness": "true",
             "cost": 1.0,
-            "inventory_provider": "generator",
-            "inventory_type": "slice_profiles",
-            "latency": 34,
-            "ran_latency": 18,
-            "ran_reliability": 99.99,
             "reliability": 99.99,
-            "uniqueness": "true"
-        },
-        {
+            "latency": 16,
             "core_latency": 16,
             "core_reliability": 99.99,
-            "cost": 1.0,
-            "inventory_provider": "generator",
-            "inventory_type": "slice_profiles",
-            "latency": 35,
-            "ran_latency": 19,
-            "ran_reliability": 99.99,
-            "reliability": 99.99,
-            "uniqueness": "true"
+            "creation_cost": 0.9
         },
         {
-            "core_latency": 17,
-            "core_reliability": 99.99,
-            "cost": 1.0,
             "inventory_provider": "generator",
             "inventory_type": "slice_profiles",
-            "latency": 35,
-            "ran_latency": 18,
-            "ran_reliability": 99.99,
+            "uniqueness": "true",
+            "cost": 1.0,
             "reliability": 99.99,
-            "uniqueness": "true"
-        },
-        {
+            "latency": 17,
             "core_latency": 17,
             "core_reliability": 99.99,
-            "cost": 1.0,
-            "inventory_provider": "generator",
-            "inventory_type": "slice_profiles",
-            "latency": 36,
-            "ran_latency": 19,
-            "ran_reliability": 99.99,
-            "reliability": 99.99,
-            "uniqueness": "true"
+            "creation_cost": 0.9
         },
         {
-            "core_latency": 18,
-            "core_reliability": 99.99,
-            "cost": 1.0,
             "inventory_provider": "generator",
             "inventory_type": "slice_profiles",
-            "latency": 36,
-            "ran_latency": 18,
-            "ran_reliability": 99.99,
+            "uniqueness": "true",
+            "cost": 1.0,
             "reliability": 99.99,
-            "uniqueness": "true"
-        },
-        {
+            "latency": 18,
             "core_latency": 18,
             "core_reliability": 99.99,
-            "cost": 1.0,
-            "inventory_provider": "generator",
-            "inventory_type": "slice_profiles",
-            "latency": 37,
-            "ran_latency": 19,
-            "ran_reliability": 99.99,
-            "reliability": 99.99,
-            "uniqueness": "true"
+            "creation_cost": 0.9
         },
         {
-            "core_latency": 19,
-            "core_reliability": 99.99,
-            "cost": 1.0,
             "inventory_provider": "generator",
             "inventory_type": "slice_profiles",
-            "latency": 37,
-            "ran_latency": 18,
-            "ran_reliability": 99.99,
+            "uniqueness": "true",
+            "cost": 1.0,
             "reliability": 99.99,
-            "uniqueness": "true"
-        },
-        {
+            "latency": 19,
             "core_latency": 19,
             "core_reliability": 99.99,
-            "cost": 1.0,
-            "inventory_provider": "generator",
-            "inventory_type": "slice_profiles",
-            "latency": 38,
-            "ran_latency": 19,
-            "ran_reliability": 99.99,
-            "reliability": 99.99,
-            "uniqueness": "true"
+            "creation_cost": 0.9
         }
     ]
 }
index 1fb8584..8d9bcc5 100644 (file)
@@ -46,13 +46,15 @@ class TestCandidates(unittest.TestCase):
                                 "ran_latency": 10,
                                 "ran_reliability": 99.99,
                                 "reliability": 99.99,
-                                "uniqueness": "true"
+                                "uniqueness": "true",
+                                "creation_cost": 0.9
                             }
         info = Candidate.build_candidate_info("generator", "slice_profiles", 1.0, "true", id)
         subnet_requirements = {"core": {"latency": 15, "reliability": 99.99},
                                "ran": {"latency": 10, "reliability": 99.99, "coverage_area_ta_list": "City: Chennai"}
                                }
 
-        candidate = SliceProfilesCandidate(info=info, subnet_requirements=subnet_requirements)
+        candidate = SliceProfilesCandidate(info=info, subnet_requirements=subnet_requirements,
+                                           default_fields={"creation_cost": 0.9})
 
         self.assertEqual(expected_candidate, candidate.convert_nested_dict_to_dict())
index 76ecd41..2c0f207 100644 (file)
@@ -39,26 +39,34 @@ class TestGenerator(unittest.TestCase):
 
         generator = Generator()
 
-        filtering_attributes = {'core': {'latency': {'min': 15, 'max': 20, 'steps': 1},
-                                         'reliability': {'values': [99.99]}},
-                                'ran': {'latency': {'min': 10, 'max': 20, 'steps': 1},
-                                        'reliability': {'values': [99.99]},
-                                        'coverage_area_ta_list': {'values': ['City: Chennai']}}}
+        filtering_attributes = {
+                                  'service_profile': {
+                                        'latency': {'value': 30, 'operator': 'lte'},
+                                        'reliability': {'value': 99.99, 'operator': 'gte'},
+                                        'coverage_area_ta_list': {'value': 'City: Chennai', 'operator': 'eq'}
+                                  },
+                                  'subnets': {
+                                     'core': {'latency': {'min': 15, 'max': 30, 'steps': 1},
+                                              'reliability': {'values': [99.99]}},
+                                     'ran': {'latency': {'min': 10, 'max': 30, 'steps': 1},
+                                             'reliability': {'values': [99.99]},
+                                             'coverage_area_ta_list': {'values': ['City: Chennai']}}
+                                  }
+                                }
 
         generated_candidates = generator.generate_candidates('slice_profiles', filtering_attributes,
-                                                             candidate_uniqueness='true')
+                                                             candidate_uniqueness='true',
+                                                             default_fields={"creation_cost": 0.9})
 
         for candidate in generated_candidates:
             self.assertIsNotNone(candidate['candidate_id'])
             del candidate['candidate_id']
 
-        for candidate in expected_candidates:
-            del candidate['candidate_id']
-
         self.assertCountEqual(expected_candidates, generated_candidates)
 
         self.assertEqual([], generator.generate_candidates('cloud', filtering_attributes,
-                                                           candidate_uniqueness='true'))
+                                                           candidate_uniqueness='true',
+                                                           default_fields={"creation_cost": 0.9}))
 
     def test_resolve_demands(self):
         demands_file = './conductor/tests/unit/data/plugins/inventory_provider/gen_demand_list.json'
@@ -69,7 +77,7 @@ class TestGenerator(unittest.TestCase):
 
         generator = Generator()
         resolved_demands = generator.resolve_demands(demands, plan_info=None, triage_translator_data=None)
-        for demand, candidate_list in resolved_demands.items():
+        for _, candidate_list in resolved_demands.items():
             for candidate in candidate_list:
                 self.assertIsNotNone(candidate['candidate_id'])
                 del candidate['candidate_id']
index 9d2298d..ee5fcf1 100644 (file)
@@ -67,6 +67,7 @@ console_scripts =
 
 conductor.inventory_provider.plugin =
     aai = conductor.data.plugins.inventory_provider.aai:AAI
+    generator = conductor.data.plugins.inventory_provider.generator:Generator
 
 conductor.vim_controller.plugin =
     multicloud = conductor.data.plugins.vim_controller.multicloud:MULTICLOUD