summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkrishnaa96 <krishna.moorthy6@wipro.com>2020-09-28 13:11:41 +0530
committerkrishnaa96 <krishna.moorthy6@wipro.com>2020-09-30 12:39:00 +0530
commitad5d64f9df4eea5379db1aad2f75369c345eb4b1 (patch)
tree86d7002f12bb820452bf572076461187c4bb81a8
parent3b7747c3710f41d5bb40bf8becc4430a63637c3a (diff)
Fix to support multiple inventory providers
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
-rwxr-xr-xconductor.conf2
-rw-r--r--conductor/conductor/data/plugins/inventory_provider/candidates/__init__.py0
-rw-r--r--conductor/conductor/data/plugins/inventory_provider/candidates/slice_profiles_candidate.py37
-rw-r--r--conductor/conductor/data/plugins/inventory_provider/generator.py44
-rw-r--r--conductor/conductor/data/plugins/inventory_provider/utils/__init__.py0
-rw-r--r--conductor/conductor/data/service.py13
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/gen_demand_list.json84
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/generated_candidates.json697
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/resolved_demands_gen.json151
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/test_candidates.py6
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/test_generator.py30
-rw-r--r--conductor/setup.cfg1
12 files changed, 297 insertions, 768 deletions
diff --git a/conductor.conf b/conductor.conf
index 7b04ec7..e2e2c66 100755
--- a/conductor.conf
+++ b/conductor.conf
@@ -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
index 0000000..e69de29
--- /dev/null
+++ b/conductor/conductor/data/plugins/inventory_provider/candidates/__init__.py
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
index 3e57d64..db10ee5 100644
--- a/conductor/conductor/data/plugins/inventory_provider/candidates/slice_profiles_candidate.py
+++ b/conductor/conductor/data/plugins/inventory_provider/candidates/slice_profiles_candidate.py
@@ -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()}
diff --git a/conductor/conductor/data/plugins/inventory_provider/generator.py b/conductor/conductor/data/plugins/inventory_provider/generator.py
index 693b7c7..17fe7a5 100644
--- a/conductor/conductor/data/plugins/inventory_provider/generator.py
+++ b/conductor/conductor/data/plugins/inventory_provider/generator.py
@@ -18,23 +18,35 @@
#
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
index 0000000..e69de29
--- /dev/null
+++ b/conductor/conductor/data/plugins/inventory_provider/utils/__init__.py
diff --git a/conductor/conductor/data/service.py b/conductor/conductor/data/service.py
index 67d3c8c..48f3305 100644
--- a/conductor/conductor/data/service.py
+++ b/conductor/conductor/data/service.py
@@ -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'))
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
index cfe5a78..a21b0ac 100644
--- 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
@@ -6,6 +6,9 @@
"global-customer-id": "customer-123",
"service-type": "TEST"
},
+ "default_attributes": {
+ "creation_cost": 0.9
+ },
"inventory_provider": "generator",
"inventory_type": "nssi"
}
@@ -13,54 +16,71 @@
"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"
}
]
}
-
diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/generated_candidates.json b/conductor/conductor/tests/unit/data/plugins/inventory_provider/generated_candidates.json
index d4c76f0..135b254 100644
--- a/conductor/conductor/tests/unit/data/plugins/inventory_provider/generated_candidates.json
+++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/generated_candidates.json
@@ -1,752 +1,317 @@
[
{
- "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
}
]
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
index b877cca..ac9c674 100644
--- 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
@@ -2,174 +2,59 @@
"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
}
]
}
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
index 1fb8584..8d9bcc5 100644
--- a/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_candidates.py
+++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_candidates.py
@@ -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())
diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_generator.py b/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_generator.py
index 76ecd41..2c0f207 100644
--- a/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_generator.py
+++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_generator.py
@@ -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']
diff --git a/conductor/setup.cfg b/conductor/setup.cfg
index 9d2298d..ee5fcf1 100644
--- a/conductor/setup.cfg
+++ b/conductor/setup.cfg
@@ -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