Skip to content
Snippets Groups Projects
Commit d167ccc7 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Merge branch 'feat/xr_service_handler_fix_for_single_layer_services' into 'develop'

Fix xr service handler for cases where XR constellation is represented as single device

See merge request !85
parents fb817b87 fc5fdff5
No related branches found
No related tags found
2 merge requests!142Release TeraFlowSDN 2.1,!85Fix xr service handler for cases where XR constellation is represented as single device
...@@ -42,6 +42,13 @@ class TapiXrServiceHandler(_ServiceHandler): ...@@ -42,6 +42,13 @@ class TapiXrServiceHandler(_ServiceHandler):
) -> List[Union[bool, Exception]]: ) -> List[Union[bool, Exception]]:
chk_type('endpoints', endpoints, list) chk_type('endpoints', endpoints, list)
# When using regular mode where XR constellation is a single device, we get two endpoints.
# Convert that representation to a form that is understood by the service handler that
# expects constellation to be represented as multiple devices.
if len(endpoints) == 2:
endpoints = [None, endpoints[0], endpoints[1], None]
if len(endpoints) != 4: return [] if len(endpoints) != 4: return []
service_uuid = self.__service.service_id.service_uuid.uuid service_uuid = self.__service.service_id.service_uuid.uuid
...@@ -68,10 +75,17 @@ class TapiXrServiceHandler(_ServiceHandler): ...@@ -68,10 +75,17 @@ class TapiXrServiceHandler(_ServiceHandler):
raise Exception('Different Src-Dst devices not supported by now') raise Exception('Different Src-Dst devices not supported by now')
controller = src_controller controller = src_controller
# If the special mode that splits XR constellation to multiple modelled devices is used,
# add the device name to interface name. Otherwise use it as is (it will already contain pipe character
# end edge device name). This code should be refactored, as interface name structure is internal matter
# to XR driver and subject to change.
constellation_unique_src = src_endpoint.name if "|" in src_endpoint.name else '|'.join([src_device.name, src_endpoint.name])
constellation_unique_dst = dst_endpoint.name if "|" in dst_endpoint.name else '|'.join([dst_device.name, dst_endpoint.name])
json_config_rule = json_config_rule_set('/services/service[{:s}]'.format(service_uuid), { json_config_rule = json_config_rule_set('/services/service[{:s}]'.format(service_uuid), {
'uuid' : service_uuid, 'uuid' : service_uuid,
'input_sip_name' : '|'.join([src_device.name, src_endpoint.name]), 'input_sip_name' : constellation_unique_src,
'output_sip_name': '|'.join([dst_device.name, dst_endpoint.name]), 'output_sip_name': constellation_unique_dst,
'capacity_unit' : capacity_unit, 'capacity_unit' : capacity_unit,
'capacity_value' : capacity_value, 'capacity_value' : capacity_value,
}) })
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment