Add generator plugin to generate slice profile 82/111982/3
authorkrishnaa96 <krishna.moorthy6@wipro.com>
Tue, 1 Sep 2020 06:46:01 +0000 (12:16 +0530)
committerkrishnaa96 <krishna.moorthy6@wipro.com>
Fri, 11 Sep 2020 14:19:58 +0000 (19:49 +0530)
Issue-ID: OPTFRA-802
Signed-off-by: krishnaa96 <krishna.moorthy6@wipro.com>
Change-Id: I4dac19a11c560fbf193da46601b938a11a8f5aeb

14 files changed:
conductor/conductor/controller/translator_utils.py
conductor/conductor/data/plugins/inventory_provider/candidates/candidate.py
conductor/conductor/data/plugins/inventory_provider/candidates/slice_profiles_candidate.py [new file with mode: 0644]
conductor/conductor/data/plugins/inventory_provider/generator.py
conductor/conductor/data/plugins/inventory_provider/utils/aai_utils.py
conductor/conductor/tests/unit/data/plugins/inventory_provider/gen_demand_list.json [new file with mode: 0644]
conductor/conductor/tests/unit/data/plugins/inventory_provider/generated_candidates.json
conductor/conductor/tests/unit/data/plugins/inventory_provider/nsi_candidate.json
conductor/conductor/tests/unit/data/plugins/inventory_provider/nssi_candidate.json
conductor/conductor/tests/unit/data/plugins/inventory_provider/resolved_demands_gen.json [new file with mode: 0644]
conductor/conductor/tests/unit/data/plugins/inventory_provider/slice_profile_converted.json
conductor/conductor/tests/unit/data/plugins/inventory_provider/test_candidates.py [new file with mode: 0644]
conductor/conductor/tests/unit/data/plugins/inventory_provider/test_generator.py
conductor/conductor/tests/unit/solver/optimizer/constraints/test_threshold.py

index a7452f2..17a9f82 100644 (file)
@@ -21,7 +21,7 @@ VERSIONS = {'BASE': ["2016-11-01", "2017-10-10", "2018-02-01"],
             'GENERIC': ["2020-08-13"]}
 LOCATION_KEYS = ['latitude', 'longitude', 'host_name', 'clli_code']
 INVENTORY_PROVIDERS = ['aai', 'generator']
-INVENTORY_TYPES = ['cloud', 'service', 'transport', 'vfmodule', 'nssi']
+INVENTORY_TYPES = ['cloud', 'service', 'transport', 'vfmodule', 'nssi', 'nsi', 'slice_profiles']
 DEFAULT_INVENTORY_PROVIDER = INVENTORY_PROVIDERS[0]
 CANDIDATE_KEYS = ['candidate_id', 'cost', 'inventory_type', 'location_id',
                   'location_type']
index 2b2eb4b..c052060 100644 (file)
@@ -17,6 +17,7 @@
 # -------------------------------------------------------------------------
 #
 
+
 class Candidate(object):
     def __init__(self, info):
         self.candidate_id = info.get('candidate_id')
diff --git a/conductor/conductor/data/plugins/inventory_provider/candidates/slice_profiles_candidate.py b/conductor/conductor/data/plugins/inventory_provider/candidates/slice_profiles_candidate.py
new file mode 100644 (file)
index 0000000..3e57d64
--- /dev/null
@@ -0,0 +1,83 @@
+#
+# -------------------------------------------------------------------------
+#   Copyright (C) 2020 Wipro Limited.
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+#
+# -------------------------------------------------------------------------
+#
+
+import copy
+
+from conductor.data.plugins.inventory_provider.candidates.candidate import Candidate
+
+
+def copy_first(x):
+    return list(filter(None, x))[0]
+
+
+ATTRIBUTE_AGGREGATION = {
+    "max_bandwidth": copy_first,
+    "jitter": sum,
+    "sst": copy_first,
+    "latency": sum,
+    "resource_sharing_level": copy_first,
+    "s_nssai": copy_first,
+    "plmn_id_list": copy_first,
+    "availability": copy_first,
+    "throughput": min,
+    "reliability": copy_first,
+    "max_number_of_ues": copy_first,
+    "exp_data_rate_ul": min,
+    "exp_data_rate_dl": min,
+    "ue_mobility_level": copy_first,
+    "coverage_area_ta_list": copy_first,
+    "activity_factor": copy_first,
+    "survival_time": copy_first,
+    "max_number_of_conns": copy_first
+}
+
+
+class SliceProfilesCandidate(Candidate):
+
+    def __init__(self, **kwargs):
+        super().__init__(kwargs["info"])
+        self.subnet_requirements = kwargs["subnet_requirements"]
+
+    def convert_nested_dict_to_dict(self):
+        nested_dict = self.__dict__
+
+        slice_requirements = self.get_slice_requirements()
+
+        slice_profile_candidate = copy.deepcopy(nested_dict)
+        slice_profile_candidate.pop("subnet_requirements")
+        slice_profile_candidate.update(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)
+
+        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
+
+        return {attr: ATTRIBUTE_AGGREGATION[attr](values) for attr, values in slice_profile_tuples.items()}
index c9cf67f..693b7c7 100644 (file)
@@ -23,6 +23,8 @@ 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 SliceProfilesCandidate
 
 LOG = log.getLogger(__name__)
 
@@ -35,60 +37,113 @@ class Generator(base.InventoryProviderBase):
 
     def name(self):
         """Return human-readable name."""
-        return "Generator"
+        return "generator"
 
     def resolve_demands(self, demands, plan_info, triage_translator_data):
         """Resolve demands into candidate list"""
-        resolved_demands = dict()
+        resolved_demands = {}
         for name, requirements in demands.items():
-            resolved_demands[name] = list()
+            resolved_demands[name] = []
             for requirement in requirements:
                 inventory_type = requirement.get('inventory_type').lower()
                 candidate_uniqueness = requirement.get('unique', 'true')
                 filtering_attributes = requirement.get('filtering_attributes')
-
-                resolved_demands[name].append(self.generate_candidates(inventory_type,
+                resolved_demands[name].extend(self.generate_candidates(inventory_type,
                                                                        filtering_attributes,
                                                                        candidate_uniqueness))
 
         return resolved_demands
 
     def generate_candidates(self, inventory_type, filtering_attributes, candidate_uniqueness):
-        candidate_list = list()
-
-        if inventory_type == "nssi":
-            attribute_names, attribute_combinations = \
-                self.generate_combinations(filtering_attributes)
-            for combination in attribute_combinations:
-                candidate = dict()
-
-                for (name, value) in zip(attribute_names, combination):
-                    candidate[name] = value
 
-                candidate['candidate_id'] = str(uuid.uuid4())
-                candidate['cost'] = 1.0
-                candidate['inventory_type'] = inventory_type
-                candidate['inventory_provider'] = 'generator'
-                candidate['uniqueness'] = candidate_uniqueness
-                candidate['candidate_type'] = 'nssi'
-
-                candidate_list.append(candidate)
+        if inventory_type == "slice_profiles":
+            return self.generate_slice_profile_candidates(filtering_attributes, inventory_type, candidate_uniqueness)
         else:
             LOG.debug("No functionality implemented for \
                       generating candidates for inventory_type {}".format(inventory_type))
-
-        return candidate_list
-
-    def generate_combinations(self, attributes):
-        """Generates all combination of the given attribute values."""
-        attr = dict()
-        for attribute, attr_params in attributes.items():
-            values = attr_params.get('values')
-            if not values:
-                values = range(attr_params.get('min', 1), attr_params.get('max'),
-                               attr_params.get('steps', 1))
-            attr[attribute] = values
-
-        attribute_names = list(attr.keys())
-        attribute_combinations = list(itertools.product(*attr.values()))
-        return attribute_names, attribute_combinations
+            return []
+
+    def generate_slice_profile_candidates(self, filtering_attributes, inventory_type, candidate_uniqueness):
+        """Generates a list of slice profile candidate based on the filtering attributes,
+
+           A sample filtering attribute is given below
+           filtering_attributes = {'core': {'latency': {'min': 15, 'max': 20, 'steps': 1},
+                                            'reliability': {'values': [99.999]}},
+                                   'ran': {'latency': {'min': 10, 'max': 20, 'steps': 1},
+                                           'reliability': {'values': [99.99]},
+                                           'coverage_area_ta_list': {'values': ['City: Chennai']}}}
+            It will generate slice profile combination from the attributes for each subnet and
+            generates combination of slice profile tuples from the each subnet.
+        """
+        subnet_combinations = {}
+        for subnet, attributes in filtering_attributes.items():
+            attribute_names, attribute_combinations = generate_combinations(attributes)
+            subnet_combinations[subnet] = organize_combinations(attribute_names, attribute_combinations)
+
+        subnet_names, slice_profile_combinations = get_combinations_from_dict(subnet_combinations)
+        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())
+
+        return candidates
+
+
+def generate_combinations(attributes):
+    """Generates all combination of the given attribute values.
+
+       The params can have a values list or range(min, max)
+       from which the combinations are generated.
+    """
+    attr = dict()
+    for attribute, attr_params in attributes.items():
+        values = attr_params.get('values')
+        if not values:
+            values = range(attr_params.get('min', 1), attr_params.get('max'),
+                           attr_params.get('steps', 1))
+        attr[attribute] = values
+
+    return get_combinations_from_dict(attr)
+
+
+def get_combinations_from_dict(attr):
+    """Generates combinations from a dictionary containing lists
+
+       Input:
+       attr = {"latency": [1,2,3],
+               "reliability": [99.99, 99.9]
+              }
+       Output:
+       attribute_name: ["latency", "reliability"]
+       attribute_combinations: [[1,99.99], [2,99.99], [3,99.99], [1,99.9], [2,99.9], [3,99.9]]
+    """
+    attribute_names = list(attr.keys())
+    attribute_combinations = list(itertools.product(*attr.values()))
+    return attribute_names, attribute_combinations
+
+
+def organize_combinations(attribute_names, attribute_combinations):
+    """Organise the generated combinations into list of dicts.
+
+       Input:
+       attribute_name: ["latency", "reliability"]
+       attribute_combinations: [[1,99.99], [2,99.99], [3,99.99], [1,99.9], [2,99.9], [3,99.9]]
+       Output:
+       combinations = [{'latency': 1, 'reliability': 99.99},
+                       {'latency': 2, 'reliability': 99.99},
+                       {'latency': 3, 'reliability': 99.99},
+                       {'latency': 1, 'reliability': 99.9},
+                       {'latency': 2, 'reliability': 99.9},
+                       {'latency': 3, 'reliability': 99.9}
+                      ]
+    """
+    combinations = []
+    for combination in attribute_combinations:
+        comb = {}
+        for (name, value) in zip(attribute_names, combination):
+            comb[name] = value
+        combinations.append(comb)
+    return combinations
index 2fbaabd..8a11070 100644 (file)
@@ -28,7 +28,7 @@ def convert_hyphen_to_under_score(hyphened_dict):
     if hyphened_dict:
         for key in hyphened_dict:
             if '-' in key:
-                converted_dict[key.replace('-', '_')] = hyphened_dict[key]
+                converted_dict[key.replace('-', '_').lower()] = hyphened_dict[key]
             else:
                 converted_dict[key] = hyphened_dict[key]
         if 'resource_version' in converted_dict:
diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/gen_demand_list.json b/conductor/conductor/tests/unit/data/plugins/inventory_provider/gen_demand_list.json
new file mode 100644 (file)
index 0000000..cfe5a78
--- /dev/null
@@ -0,0 +1,66 @@
+{
+    "embb": [
+        {
+            "filtering_attributes": {
+                "equipment-role": "TEST",
+                "global-customer-id": "customer-123",
+                "service-type": "TEST"
+            },
+            "inventory_provider": "generator",
+            "inventory_type": "nssi"
+        }
+    ],
+    "urllc": [
+        {
+            "filtering_attributes": {
+                "core": {
+                    "latency": {
+                        "max": 20,
+                        "min": 15,
+                        "steps": 1
+                    },
+                    "reliability": {
+                        "values": [
+                            99.99
+                        ]
+                    }
+                }
+            },
+            "inventory_provider": "generator",
+            "inventory_type": "slice_profiles",
+            "unique": "true"
+        },
+        {
+            "filtering_attributes": {
+                "core": {
+                    "latency": {
+                        "max": 20,
+                        "min": 15,
+                        "steps": 1
+                    },
+                    "reliability": {
+                        "values": [
+                            99.99
+                        ]
+                    }
+                },
+                "ran": {
+                    "latency": {
+                        "max": 20,
+                        "min": 18,
+                        "steps": 1
+                    },
+                    "reliability": {
+                        "values": [
+                            99.99
+                        ]
+                    }
+                }
+            },
+            "inventory_provider": "generator",
+            "inventory_type": "slice_profiles",
+            "unique": "true"
+        }
+    ]
+}
+
index 14d89c4..d4c76f0 100644 (file)
 [
     {
-        "candidate_id": "c5bff81d-e0de-45df-9a5c-72dd8696a901",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 5,
+        "inventory_type": "slice_profiles",
+        "latency": 25,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 10,
+        "ran_reliability": 99.99,
         "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "8c92180c-26e3-47c7-8df3-fcf12c248606",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 5,
-        "reliability": 99.999,
+        "inventory_type": "slice_profiles",
+        "latency": 26,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 11,
+        "ran_reliability": 99.99,
+        "reliability": 99.99,
+        "uniqueness": "true"
+    },
+    {
+        "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",
+        "latency": 27,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 12,
+        "ran_reliability": 99.99,
+        "reliability": 99.99,
+        "uniqueness": "true"
+    },
+    {
+        "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",
+        "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",
+        "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_reliability": 99.99,
+        "reliability": 99.99,
+        "uniqueness": "true"
+    },
+    {
+        "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,
+        "reliability": 99.99,
+        "uniqueness": "true"
+    },
+    {
+        "candidate_id": "6e5f0c89-95de-4fd2-bd61-4bae1a6f4507",
+        "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_reliability": 99.99,
+        "reliability": 99.99,
+        "uniqueness": "true"
+    },
+    {
+        "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,
+        "reliability": 99.99,
+        "uniqueness": "true"
+    },
+    {
+        "candidate_id": "c151fc74-5602-42c7-9d88-68b4b2ce7a92",
+        "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_reliability": 99.99,
+        "reliability": 99.99,
+        "uniqueness": "true"
+    },
+    {
+        "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,
+        "reliability": 99.99,
+        "uniqueness": "true"
+    },
+    {
+        "candidate_id": "86555fc1-d158-4739-8e4a-e34f1c01c9b9",
+        "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"
     },
     {
-        "candidate_id": "d13ead23-e768-4bd1-886d-e0d8de014931",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 6,
+        "inventory_type": "slice_profiles",
+        "latency": 27,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 11,
+        "ran_reliability": 99.99,
         "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "47c84e0a-7f7e-41f1-bdc2-38856de96a1c",
-        "candidate_type": "nssi",
+        "candidate_id": "948ab1a7-06c0-4f34-ae34-e5df1f5dbcfe",
+        "core_latency": 16,
+        "core_reliability": 99.99,
         "cost": 1.0,
+        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
-        "inventory_type": "nssi",
-        "latency": 6,
-        "reliability": 99.999,
+        "inventory_type": "slice_profiles",
+        "latency": 28,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 12,
+        "ran_reliability": 99.99,
+        "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "cc3dd37f-2f0f-4733-9657-b864fcc327c0",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 7,
+        "inventory_type": "slice_profiles",
+        "latency": 29,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 13,
+        "ran_reliability": 99.99,
         "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "3d95ebf5-ad71-4898-b011-80943d6d67f3",
-        "candidate_type": "nssi",
+        "candidate_id": "b956dce2-a898-4e9c-aa02-9ef5082028c1",
+        "core_latency": 16,
+        "core_reliability": 99.99,
         "cost": 1.0,
+        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
-        "inventory_type": "nssi",
-        "latency": 7,
-        "reliability": 99.999,
+        "inventory_type": "slice_profiles",
+        "latency": 30,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 14,
+        "ran_reliability": 99.99,
+        "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "fae0f131-cc17-4c80-84d1-b4ec90ea216a",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 8,
+        "inventory_type": "slice_profiles",
+        "latency": 31,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 15,
+        "ran_reliability": 99.99,
         "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "aa39b3ed-8fd7-4013-ae6a-4b7b32201664",
-        "candidate_type": "nssi",
+        "candidate_id": "aa50050c-bece-4f8a-ab09-cfb928da955b",
+        "core_latency": 16,
+        "core_reliability": 99.99,
         "cost": 1.0,
+        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
-        "inventory_type": "nssi",
-        "latency": 8,
-        "reliability": 99.999,
+        "inventory_type": "slice_profiles",
+        "latency": 32,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 16,
+        "ran_reliability": 99.99,
+        "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "7beb2493-feb1-478f-850a-81d49fcc6e09",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 9,
+        "inventory_type": "slice_profiles",
+        "latency": 33,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 17,
+        "ran_reliability": 99.99,
         "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "3bff4bee-9ba3-41be-8ed2-001b25bc2d56",
-        "candidate_type": "nssi",
+        "candidate_id": "7313812c-1d53-4a82-919b-50db6f9e69f0",
+        "core_latency": 16,
+        "core_reliability": 99.99,
         "cost": 1.0,
+        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
-        "inventory_type": "nssi",
-        "latency": 9,
-        "reliability": 99.999,
+        "inventory_type": "slice_profiles",
+        "latency": 34,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 18,
+        "ran_reliability": 99.99,
+        "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "350baccf-072f-4371-a7be-5b19a6dfd31b",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 10,
+        "inventory_type": "slice_profiles",
+        "latency": 35,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 19,
+        "ran_reliability": 99.99,
         "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "d43f8590-a2d5-4c33-ae6f-ce8817c11878",
-        "candidate_type": "nssi",
+        "candidate_id": "fef0e167-3adf-4dd8-8928-05b8eb76f443",
+        "core_latency": 17,
+        "core_reliability": 99.99,
         "cost": 1.0,
+        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
-        "inventory_type": "nssi",
-        "latency": 10,
-        "reliability": 99.999,
+        "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"
     },
     {
-        "candidate_id": "b37943fa-bfea-4149-8254-8fd80d22bd4e",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 11,
+        "inventory_type": "slice_profiles",
+        "latency": 28,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 11,
+        "ran_reliability": 99.99,
         "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "b21ce156-8b0a-4af6-a0a3-f0093000e040",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 11,
-        "reliability": 99.999,
+        "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": "1e54453a-3d40-405a-821f-b57ea33f9bb0",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 12,
+        "inventory_type": "slice_profiles",
+        "latency": 30,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 13,
+        "ran_reliability": 99.99,
         "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "f26946a3-db3d-48d5-8bbd-0620f459904b",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 12,
-        "reliability": 99.999,
+        "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"
     },
     {
-        "candidate_id": "583d6ddf-fbbc-4b47-9655-c205c30a625a",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 13,
+        "inventory_type": "slice_profiles",
+        "latency": 32,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 15,
+        "ran_reliability": 99.99,
         "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "a4aedbb8-b9cb-4476-a6ef-6f51e16ab352",
-        "candidate_type": "nssi",
+        "candidate_id": "d1e8b1b8-ce5b-4701-95d7-5df12e51c87b",
+        "core_latency": 17,
+        "core_reliability": 99.99,
         "cost": 1.0,
+        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
-        "inventory_type": "nssi",
-        "latency": 13,
-        "reliability": 99.999,
+        "inventory_type": "slice_profiles",
+        "latency": 33,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 16,
+        "ran_reliability": 99.99,
+        "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "7a48a511-4303-43be-a758-b35b1de92106",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 14,
+        "inventory_type": "slice_profiles",
+        "latency": 34,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 17,
+        "ran_reliability": 99.99,
         "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "3fcf9c64-d816-4cf6-b216-926b5a9023bd",
-        "candidate_type": "nssi",
+        "candidate_id": "359ed468-6ed9-4d72-af19-cbf4c20bde2b",
+        "core_latency": 17,
+        "core_reliability": 99.99,
         "cost": 1.0,
+        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
-        "inventory_type": "nssi",
-        "latency": 14,
-        "reliability": 99.999,
+        "inventory_type": "slice_profiles",
+        "latency": 35,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 18,
+        "ran_reliability": 99.99,
+        "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "17c46498-b622-4fc5-8254-2261318347fc",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 15,
+        "inventory_type": "slice_profiles",
+        "latency": 36,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 19,
+        "ran_reliability": 99.99,
         "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "8005dd52-5d6c-4f7d-b992-7f5650e1a235",
-        "candidate_type": "nssi",
+        "candidate_id": "b7761dc6-fd27-46ec-abb8-c58a7976514f",
+        "core_latency": 18,
+        "core_reliability": 99.99,
         "cost": 1.0,
+        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
-        "inventory_type": "nssi",
-        "latency": 15,
-        "reliability": 99.999,
+        "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"
     },
     {
-        "candidate_id": "203802d4-44c8-4251-9977-401880992ac0",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 16,
+        "inventory_type": "slice_profiles",
+        "latency": 29,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 11,
+        "ran_reliability": 99.99,
         "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "728343ef-e41e-405e-b626-f3dcffe02e65",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 16,
-        "reliability": 99.999,
+        "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": "77ac7fea-8452-4c83-9bdc-c1f4ce5c7314",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 17,
+        "inventory_type": "slice_profiles",
+        "latency": 31,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 13,
+        "ran_reliability": 99.99,
         "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "971ef4bf-fa71-4e9c-9b1b-dbfa6b28bb39",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 17,
-        "reliability": 99.999,
+        "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"
     },
     {
-        "candidate_id": "9925d2b3-24a8-40e6-844d-f7d7b4cb5437",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 18,
+        "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": "b862a417-6e59-4946-995e-b562420199f0",
-        "candidate_type": "nssi",
+        "candidate_id": "8756ea24-7a29-47a4-9c36-55a87b14193c",
+        "core_latency": 18,
+        "core_reliability": 99.99,
         "cost": 1.0,
+        "coverage_area_ta_list": "City: Chennai",
         "inventory_provider": "generator",
-        "inventory_type": "nssi",
-        "latency": 18,
-        "reliability": 99.999,
+        "inventory_type": "slice_profiles",
+        "latency": 34,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 16,
+        "ran_reliability": 99.99,
+        "reliability": 99.99,
         "uniqueness": "true"
     },
     {
-        "candidate_id": "719b0a26-7a6e-4fab-9547-f4194620ed4a",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 19,
+        "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": "0f00caf7-a985-4256-b160-5d98894dae1b",
-        "candidate_type": "nssi",
+        "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": "nssi",
-        "latency": 19,
-        "reliability": 99.999,
+        "inventory_type": "slice_profiles",
+        "latency": 36,
+        "ran_coverage_area_ta_list": "City: Chennai",
+        "ran_latency": 18,
+        "ran_reliability": 99.99,
+        "reliability": 99.99,
+        "uniqueness": "true"
+    },
+    {
+        "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,
+        "reliability": 99.99,
+        "uniqueness": "true"
+    },
+    {
+        "candidate_id": "f0084f21-a268-430a-8642-050aa7e3ad71",
+        "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"
+    },
+    {
+        "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",
+        "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_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"
+    },
+    {
+        "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,
+        "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,
+        "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_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_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"
     }
 ]
index edd5d78..edb71ec 100644 (file)
 
       "profile_id": "89ad9f49-4201-4e3a-aac1-b0f27902c299",
       "latency": 20,
-      "max_number_of_UEs": 10,
-      "coverage_area_TA_list": "[{\"province\":\"??\",\"city\":\"???\",\"county\":\"???\",\"street\":\"?????\"}]",
+      "max_number_of_ues": 10,
+      "coverage_area_ta_list": "[{\"province\":\"??\",\"city\":\"???\",\"county\":\"???\",\"street\":\"?????\"}]",
       "ue_mobility_level": "stationary",
       "resource_sharing_level": "0",
-      "exp_data_rate_UL": 100,
-      "exp_data_rate_DL": 100,
+      "exp_data_rate_ul": 100,
+      "exp_data_rate_dl": 100,
       "activity_factor": 0,
       "e2e_latency": 20,
       "jitter": 1,
index b5a4a7d..44f24e4 100644 (file)
 
      "profile_id": "cdad9f49-4201-4e3a-aac1-b0f27902c299",
       "latency": 20,
-      "max_number_of_UEs": 0,
-      "coverage_area_TA_list": "[{\"province\":\"??\",\"city\":\"???\",\"county\":\"???\",\"street\":\"?????\"}]",
+      "max_number_of_ues": 0,
+      "coverage_area_ta_list": "[{\"province\":\"??\",\"city\":\"???\",\"county\":\"???\",\"street\":\"?????\"}]",
       "ue_mobility_level": "stationary",
       "resource_sharing_level": "0",
-      "exp_data_rate_UL": 100,
-      "exp_data_rate_DL": 100,
+      "exp_data_rate_ul": 100,
+      "exp_data_rate_dl": 100,
       "activity_factor": 0,
       "e2e_latency": 0,
       "jitter": 0,
diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/resolved_demands_gen.json b/conductor/conductor/tests/unit/data/plugins/inventory_provider/resolved_demands_gen.json
new file mode 100644 (file)
index 0000000..b877cca
--- /dev/null
@@ -0,0 +1,175 @@
+{
+    "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,
+            "cost": 1.0,
+            "inventory_provider": "generator",
+            "inventory_type": "slice_profiles",
+            "latency": 19,
+            "reliability": 99.99,
+            "uniqueness": "true"
+        },
+        {
+            "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"
+        },
+        {
+            "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,
+            "cost": 1.0,
+            "inventory_provider": "generator",
+            "inventory_type": "slice_profiles",
+            "latency": 34,
+            "ran_latency": 18,
+            "ran_reliability": 99.99,
+            "reliability": 99.99,
+            "uniqueness": "true"
+        },
+        {
+            "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"
+        },
+        {
+            "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,
+            "reliability": 99.99,
+            "uniqueness": "true"
+        },
+        {
+            "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"
+        },
+        {
+            "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,
+            "reliability": 99.99,
+            "uniqueness": "true"
+        },
+        {
+            "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"
+        },
+        {
+            "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,
+            "reliability": 99.99,
+            "uniqueness": "true"
+        },
+        {
+            "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"
+        }
+    ]
+}
index f7581a2..9080491 100644 (file)
@@ -1,12 +1,12 @@
 {
                 "profile_id": "cdad9f49-4201-4e3a-aac1-b0f27902c299",
                 "latency": 20,
-                "max_number_of_UEs": 0,
-                "coverage_area_TA_list": "[{\"province\":\"??\",\"city\":\"???\",\"county\":\"???\",\"street\":\"?????\"}]",
+                "max_number_of_ues": 0,
+                "coverage_area_ta_list": "[{\"province\":\"??\",\"city\":\"???\",\"county\":\"???\",\"street\":\"?????\"}]",
                 "ue_mobility_level": "stationary",
                 "resource_sharing_level": "0",
-                "exp_data_rate_UL": 100,
-                "exp_data_rate_DL": 100,
+                "exp_data_rate_dl": 100,
+                "exp_data_rate_ul": 100,
                 "activity_factor": 0,
                 "e2e_latency": 0,
                 "jitter": 0,
diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_candidates.py b/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_candidates.py
new file mode 100644 (file)
index 0000000..1fb8584
--- /dev/null
@@ -0,0 +1,58 @@
+#
+# -------------------------------------------------------------------------
+#   Copyright (C) 2020 Wipro Limited.
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+#
+# -------------------------------------------------------------------------
+#
+
+import unittest
+import uuid
+
+from conductor.data.plugins.inventory_provider.candidates.candidate import Candidate
+from conductor.data.plugins.inventory_provider.candidates.slice_profiles_candidate import SliceProfilesCandidate
+
+class TestCandidates(unittest.TestCase):
+
+    def setUp(self):
+        pass
+
+    def tearDown(self):
+        pass
+
+    def test_slice_profiles_candidate(self):
+        id = str(uuid.uuid4())
+        expected_candidate = {
+                                "candidate_id": id,
+                                "core_latency": 15,
+                                "core_reliability": 99.99,
+                                "cost": 1.0,
+                                "coverage_area_ta_list": "City: Chennai",
+                                "inventory_provider": "generator",
+                                "inventory_type": "slice_profiles",
+                                "latency": 25,
+                                "ran_coverage_area_ta_list": "City: Chennai",
+                                "ran_latency": 10,
+                                "ran_reliability": 99.99,
+                                "reliability": 99.99,
+                                "uniqueness": "true"
+                            }
+        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)
+
+        self.assertEqual(expected_candidate, candidate.convert_nested_dict_to_dict())
index c6249ce..76ecd41 100644 (file)
@@ -37,20 +37,16 @@ class TestGenerator(unittest.TestCase):
         candidates_file = './conductor/tests/unit/data/plugins/inventory_provider/generated_candidates.json'
         expected_candidates = json.loads(open(candidates_file).read())
 
-        #uuids = [candidate['candidate_id'] for candidate in expected_candidates]
-
-        #self.patcher = patch('uuid.uuid4', side_effect=uuids)
-        #self.patcher.start()
-
         generator = Generator()
 
-        filtering_attributes = {'latency': {'min': 5, 'max': 20, 'steps': 1},
-                                'reliability': {'values': [99.99, 99.999]}}
+        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']}}}
 
-        generated_candidates = generator.generate_candidates('nssi', filtering_attributes,
+        generated_candidates = generator.generate_candidates('slice_profiles', filtering_attributes,
                                                              candidate_uniqueness='true')
-        #with open('/home/krishna/actual_candidates.json', 'w') as f:
-        #    f.write(json.dumps(generated_candidates))
 
         for candidate in generated_candidates:
             self.assertIsNotNone(candidate['candidate_id'])
@@ -63,3 +59,19 @@ class TestGenerator(unittest.TestCase):
 
         self.assertEqual([], generator.generate_candidates('cloud', filtering_attributes,
                                                            candidate_uniqueness='true'))
+
+    def test_resolve_demands(self):
+        demands_file = './conductor/tests/unit/data/plugins/inventory_provider/gen_demand_list.json'
+        demands = json.loads(open(demands_file).read())
+
+        resolved_demands_file = './conductor/tests/unit/data/plugins/inventory_provider/resolved_demands_gen.json'
+        expected_resolved_demands = json.loads(open(resolved_demands_file).read())
+
+        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 in candidate_list:
+                self.assertIsNotNone(candidate['candidate_id'])
+                del candidate['candidate_id']
+
+        self.assertEqual(expected_resolved_demands, resolved_demands)
index f12ed9c..311e790 100644 (file)
@@ -33,7 +33,7 @@ class TestThreshold(unittest.TestCase):
         # test 1
         properties = {'evaluate':
                           [{'attribute': 'latency', 'threshold': 30, 'operator': 'lte'},
-                           {'attribute': 'exp_data_rate_UL', 'threshold': 70, 'operator': 'gte'}]}
+                           {'attribute': 'exp_data_rate_ul', 'threshold': 70, 'operator': 'gte'}]}
 
         threshold_obj = Threshold('urllc_threshold', 'threshold', ['URLLC'], _priority=0,
                                   _properties=properties)