Commit f00ccfaf authored by Ville Hallivuori's avatar Ville Hallivuori
Browse files

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

parent 741d929b
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -42,6 +42,13 @@ class TapiXrServiceHandler(_ServiceHandler):
    ) -> List[Union[bool, Exception]]:

        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 []

        service_uuid = self.__service.service_id.service_uuid.uuid
@@ -68,10 +75,17 @@ class TapiXrServiceHandler(_ServiceHandler):
                raise Exception('Different Src-Dst devices not supported by now')
            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), {
                'uuid'           : service_uuid,
                'input_sip_name' : '|'.join([src_device.name, src_endpoint.name]),
                'output_sip_name': '|'.join([dst_device.name, dst_endpoint.name]),
                'input_sip_name' : constellation_unique_src,
                'output_sip_name': constellation_unique_dst,
                'capacity_unit'  : capacity_unit,
                'capacity_value' : capacity_value,
            })