From eac09e4f5d6c2f4eb7e5f8f085f88bc3ed234a42 Mon Sep 17 00:00:00 2001 From: gifrerenom <lluis.gifre@cttc.es> Date: Thu, 31 Oct 2024 07:42:36 +0000 Subject: [PATCH] Debug OFC24, Service and Optical Controller --- .../service/task_scheduler/TaskExecutor.py | 28 +++++++++++++++---- .../Task_OpticalConnectionDeconfigure.py | 11 +++++++- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/service/service/task_scheduler/TaskExecutor.py b/src/service/service/task_scheduler/TaskExecutor.py index ac06e321d..9e7175e74 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 b1afdeef1..a624e81b5 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 -- GitLab