diff --git a/src/service/service/task_scheduler/TaskExecutor.py b/src/service/service/task_scheduler/TaskExecutor.py index ac06e321d342fc7cddb9f54958a38ed87067c922..9e7175e74b07f8b1d826b857dced26ac10e39c3d 100644 --- a/src/service/service/task_scheduler/TaskExecutor.py +++ b/src/service/service/task_scheduler/TaskExecutor.py @@ -219,13 +219,22 @@ class TaskExecutor: service = item if (isinstance(item, ServiceId)): service = self.get_service(item) - class_service_handler = None + service_handler = None service_handler_settings = {} for connection in connections.connections: connection_uuid=connection.connection_id.connection_uuid - if class_service_handler is None: - class_service_handler = self.get_service_handler(connection, service,**service_handler_settings) - if class_service_handler.check_media_channel(connection_uuid): + if service_handler is None: + service_handlers = self.get_service_handlers( + connection, service, **service_handler_settings + ) + # TODO: improve to select different service handlers when needed + # By now, assume a single service handler is retrieved for all the + # device types in the path, i.e., all entries carry the same + # service handler, so we choose the first one retrieved. + if len(service_handlers) < 1: + raise Exception('Unsupported case: {:s}'.format(str(service_handlers))) + service_handler,_ = list(service_handlers.values())[0] + if service_handler.check_media_channel(connection_uuid): return True return False @@ -234,7 +243,16 @@ class TaskExecutor: ) -> bool: service_handler_settings = {} connection_uuid = connection.connection_id.connection_uuid - service_handler_class = self.get_service_handler(connection, service, **service_handler_settings) + classes_service_handlers = self.get_service_handlers( + connection, service, **service_handler_settings + ) + # TODO: improve to select different service handlers when needed + # By now, assume a single service handler is retrieved for all the + # device types in the path, i.e., all entries carry the same + # service handler, so we choose the first one retrieved. + if len(classes_service_handlers) < 1: + raise Exception('Unsupported case: {:s}'.format(str(classes_service_handlers))) + service_handler_class,_ = list(classes_service_handlers.values())[0] return service_handler_class.check_media_channel(connection_uuid) def get_device_controller(self, device : Device) -> Optional[Device]: diff --git a/src/service/service/task_scheduler/tasks/Task_OpticalConnectionDeconfigure.py b/src/service/service/task_scheduler/tasks/Task_OpticalConnectionDeconfigure.py index b1afdeef19d6526d6f52b05924b5b77a8049da8f..a624e81b58d4d2e7f6f1ad109f99a0eb1c73bb63 100644 --- a/src/service/service/task_scheduler/tasks/Task_OpticalConnectionDeconfigure.py +++ b/src/service/service/task_scheduler/tasks/Task_OpticalConnectionDeconfigure.py @@ -48,7 +48,16 @@ class Task_OpticalConnectionDeconfigure(_Task): service = self._task_executor.get_service(connection.service_id) errors = [] service_handler_settings = {} - service_handler = self._task_executor.get_service_handler(connection, service, **service_handler_settings) + service_handlers = self._task_executor.get_service_handlers( + connection, service, **service_handler_settings + ) + # TODO: improve to select different service handlers when needed + # By now, assume a single service handler is retrieved for all the + # device types in the path, i.e., all entries carry the same + # service handler, so we choose the first one retrieved. + if len(service_handlers) < 1: + raise Exception('Unsupported case: {:s}'.format(str(service_handlers))) + service_handler,_ = list(service_handlers.values())[0] endpointids_to_delete = endpointids_to_raw(connection.path_hops_endpoint_ids) connection_uuid = connection.connection_id.connection_uuid.uuid