From 3cd5d40a51a5cca81599ee21d374bdb04b415608 Mon Sep 17 00:00:00 2001
From: hajipour <shajipour@cttc.es>
Date: Fri, 20 Dec 2024 13:39:50 +0100
Subject: [PATCH] feat: - IETF data added to l3nm default config rules in the
 frontend pathcomp - controller device type added to the devices that are
 managed by a controller in get_devices_from_connection function

---
 .../service/algorithms/tools/ComposeConfigRules.py     |  2 ++
 src/service/service/task_scheduler/TaskExecutor.py     | 10 +++++++---
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/pathcomp/frontend/service/algorithms/tools/ComposeConfigRules.py b/src/pathcomp/frontend/service/algorithms/tools/ComposeConfigRules.py
index f0775371d..ca0b5b480 100644
--- a/src/pathcomp/frontend/service/algorithms/tools/ComposeConfigRules.py
+++ b/src/pathcomp/frontend/service/algorithms/tools/ComposeConfigRules.py
@@ -22,6 +22,7 @@ LOGGER = logging.getLogger(__name__)
 
 SETTINGS_RULE_NAME = '/settings'
 STATIC_ROUTING_RULE_NAME = '/static_routing'
+IETF_DATA = 'ietf_data'
 
 RE_UUID = re.compile(r'([0-9a-fA-F]{8})\-([0-9a-fA-F]{4})\-([0-9a-fA-F]{4})\-([0-9a-fA-F]{4})\-([0-9a-fA-F]{12})')
 
@@ -93,6 +94,7 @@ def compose_l3nm_config_rules(main_service_config_rules : List, subservice_confi
     CONFIG_RULES = [
         (SETTINGS_RULE_NAME, L3NM_SETTINGS_FIELD_DEFAULTS),
         (STATIC_ROUTING_RULE_NAME, {}),
+        (IETF_DATA, {}),
     ]
     for rule_name, defaults in CONFIG_RULES:
         compose_config_rules(main_service_config_rules, subservice_config_rules, rule_name, defaults)
diff --git a/src/service/service/task_scheduler/TaskExecutor.py b/src/service/service/task_scheduler/TaskExecutor.py
index 6fb1eca34..51fc42a5a 100644
--- a/src/service/service/task_scheduler/TaskExecutor.py
+++ b/src/service/service/task_scheduler/TaskExecutor.py
@@ -287,8 +287,12 @@ class TaskExecutor:
                 devices.setdefault(device_type, dict())[device_uuid] = device
             else:
                 if not exclude_managed_by_controller:
-                    device_type = DeviceTypeEnum._value2member_map_[device.device_type]
-                    devices.setdefault(device_type, dict())[device_uuid] = device
+                    controller_device_type_enum = DeviceTypeEnum._value2member_map_[controller.device_type]
+                    if controller_device_type_enum == DeviceTypeEnum.IETF_SLICE:
+                        devices.setdefault(controller_device_type_enum, dict())[device_uuid] = device
+                    else:
+                        device_type = DeviceTypeEnum._value2member_map_[device.device_type]
+                        devices.setdefault(device_type, dict())[device_uuid] = device
                 device_type = DeviceTypeEnum._value2member_map_[controller.device_type]
                 devices.setdefault(device_type, dict())[controller.device_id.device_uuid.uuid] = controller
         return devices
@@ -321,7 +325,7 @@ class TaskExecutor:
         self, connection : Connection, service : Service, **service_handler_settings
     ) -> Dict[DeviceTypeEnum, Tuple['_ServiceHandler', Dict[str, Device]]]:
         connection_device_types : Dict[DeviceTypeEnum, Dict[str, Device]] = self.get_devices_from_connection(
-            connection, exclude_managed_by_controller=True
+            connection, exclude_managed_by_controller=False
         )
         service_handlers : Dict[DeviceTypeEnum, Tuple['_ServiceHandler', Dict[str, Device]]] = dict()
         for device_type, connection_devices in connection_device_types.items():
-- 
GitLab