Skip to content
Snippets Groups Projects
Commit b656e165 authored by Mohamad Rahhal's avatar Mohamad Rahhal
Browse files

Updated-TaskExecutor

parent 691c1efc
No related branches found
No related tags found
2 merge requests!359Release TeraFlowSDN 5.0,!296Resolve "(CTTC) Add OpenFlow support through Ryu SDN controller"
...@@ -287,10 +287,15 @@ class TaskExecutor: ...@@ -287,10 +287,15 @@ class TaskExecutor:
devices.setdefault(device_type, dict())[device_uuid] = device devices.setdefault(device_type, dict())[device_uuid] = device
else: else:
if not exclude_managed_by_controller: if not exclude_managed_by_controller:
LOGGER.debug('device managed by controller = {:s}'.format(str(device_uuid)))
device_type = DeviceTypeEnum._value2member_map_[device.device_type] device_type = DeviceTypeEnum._value2member_map_[device.device_type]
LOGGER.debug('device_type not exlude by controller = {:s}'.format(str(device_type)))
devices.setdefault(device_type, dict())[device_uuid] = device devices.setdefault(device_type, dict())[device_uuid] = device
device_type = DeviceTypeEnum._value2member_map_[controller.device_type] else:
devices.setdefault(device_type, dict())[controller.device_id.device_uuid.uuid] = controller device_type = DeviceTypeEnum._value2member_map_[controller.device_type]
LOGGER.debug('device_type = {:s}'.format(str(device_type)))
devices.setdefault(device_type, dict())[controller.device_id.device_uuid.uuid] = controller
return devices return devices
# ----- Service-related methods ------------------------------------------------------------------------------------ # ----- Service-related methods ------------------------------------------------------------------------------------
...@@ -320,16 +325,30 @@ class TaskExecutor: ...@@ -320,16 +325,30 @@ class TaskExecutor:
def get_service_handlers( def get_service_handlers(
self, connection : Connection, service : Service, **service_handler_settings self, connection : Connection, service : Service, **service_handler_settings
) -> Dict[DeviceTypeEnum, Tuple['_ServiceHandler', Dict[str, Device]]]: ) -> Dict[DeviceTypeEnum, Tuple['_ServiceHandler', Dict[str, Device]]]:
connection_device_types : Dict[DeviceTypeEnum, Dict[str, Device]] = self.get_devices_from_connection( # WARNING: exclude_managed_by_controller should be True, changed to False for test purposes.
# For Ryu SDN controller we need to know the underlying devices we are traversing.
# Elaborate proper logic to resolve this case.
connection_device_types_excluded : Dict[DeviceTypeEnum, Dict[str, Device]] = self.get_devices_from_connection(
connection, exclude_managed_by_controller=True connection, exclude_managed_by_controller=True
) )
LOGGER.debug('connection_device_types_excluded = {:s}'.format(str(connection_device_types_excluded)))
connection_device_types_included : Dict[DeviceTypeEnum, Dict[str, Device]] = self.get_devices_from_connection(
connection, exclude_managed_by_controller=False
)
LOGGER.debug('connection_device_types_included = {:s}'.format(str(connection_device_types_included)))
service_handlers : Dict[DeviceTypeEnum, Tuple['_ServiceHandler', Dict[str, Device]]] = dict() service_handlers : Dict[DeviceTypeEnum, Tuple['_ServiceHandler', Dict[str, Device]]] = dict()
for device_type, connection_devices in connection_device_types.items(): for device_type, connection_devices in connection_device_types_excluded.items():
try: try:
service_handler_class = get_service_handler_class( service_handler_class = get_service_handler_class(
self._service_handler_factory, service, connection_devices) self._service_handler_factory, service, connection_devices
)
LOGGER.debug('service_handler_class IN CONNECTION DEVICE TYPE EXCLUDED = {:s}'.format(str(service_handler_class.__name__)))
service_handler = service_handler_class(service, self, **service_handler_settings) service_handler = service_handler_class(service, self, **service_handler_settings)
service_handlers[device_type] = (service_handler, connection_devices) LOGGER.debug('service_handler IN CONNECTION DEVICE TYPE EXCLUDED = {:s}'.format(str(service_handler)))
connection_devices_included = connection_device_types_included.get(device_type, connection_devices)
LOGGER.debug('connection_devices_included IN CONNECTION DEVICE TYPE EXCLUDED = {:s}'.format(str(connection_devices_included)))
service_handlers[device_type] = (service_handler, connection_devices_included)
LOGGER.debug('service_handlers IN CONNECTION DEVICE TYPE EXCLUDED = {:s}'.format(str(service_handlers)))
except ( except (
UnsatisfiedFilterException, UnsupportedFilterFieldException, UnsatisfiedFilterException, UnsupportedFilterFieldException,
UnsupportedFilterFieldValueException UnsupportedFilterFieldValueException
......
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