From cc8afab9086cbbaf65a7b1713e2198251aa752b8 Mon Sep 17 00:00:00 2001
From: gifrerenom <lluis.gifre@cttc.es>
Date: Thu, 9 Feb 2023 09:51:19 +0000
Subject: [PATCH] Device component:

- Corrected driver instantiation/selection
---
 .../service/DeviceServiceServicerImpl.py      | 21 ++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/device/service/DeviceServiceServicerImpl.py b/src/device/service/DeviceServiceServicerImpl.py
index 0258380a1..be40e64ec 100644
--- a/src/device/service/DeviceServiceServicerImpl.py
+++ b/src/device/service/DeviceServiceServicerImpl.py
@@ -109,7 +109,7 @@ class DeviceServiceServicerImpl(DeviceServiceServicer):
             if device is None:
                 raise NotFoundException('Device', device_uuid, extra_details='loading in ConfigureDevice')
 
-            driver : _Driver = self.driver_instance_cache.get(device_uuid)
+            driver : _Driver = get_driver(self.driver_instance_cache, device)
             if driver is None:
                 msg = ERROR_MISSING_DRIVER.format(device_uuid=str(device_uuid))
                 raise OperationFailedException('ConfigureDevice', extra_details=msg)
@@ -150,6 +150,11 @@ class DeviceServiceServicerImpl(DeviceServiceServicer):
         self.mutex_queues.wait_my_turn(device_uuid)
         try:
             context_client = ContextClient()
+            device = get_device(context_client, device_uuid, rw_copy=False)
+            if device is None:
+                raise NotFoundException('Device', device_uuid, extra_details='loading in DeleteDevice')
+            device_uuid = device.device_id.device_uuid.uuid
+
             self.monitoring_loops.remove_device(device_uuid)
             self.driver_instance_cache.delete(device_uuid)
             context_client.RemoveDevice(request)
@@ -163,7 +168,12 @@ class DeviceServiceServicerImpl(DeviceServiceServicer):
 
         self.mutex_queues.wait_my_turn(device_uuid)
         try:
-            driver : _Driver = self.driver_instance_cache.get(device_uuid)
+            context_client = ContextClient()
+            device = get_device(context_client, device_uuid, rw_copy=False)
+            if device is None:
+                raise NotFoundException('Device', device_uuid, extra_details='loading in DeleteDevice')
+
+            driver : _Driver = get_driver(self.driver_instance_cache, device)
             if driver is None:
                 msg = ERROR_MISSING_DRIVER.format(device_uuid=str(device_uuid))
                 raise OperationFailedException('GetInitialConfig', extra_details=msg)
@@ -197,7 +207,12 @@ class DeviceServiceServicerImpl(DeviceServiceServicer):
 
         self.mutex_queues.wait_my_turn(device_uuid)
         try:
-            driver : _Driver = self.driver_instance_cache.get(device_uuid)
+            context_client = ContextClient()
+            device = get_device(context_client, device_uuid, rw_copy=False)
+            if device is None:
+                raise NotFoundException('Device', device_uuid, extra_details='loading in DeleteDevice')
+
+            driver : _Driver = get_driver(self.driver_instance_cache, device)
             if driver is None:
                 msg = ERROR_MISSING_DRIVER.format(device_uuid=str(device_uuid))
                 raise OperationFailedException('MonitorDeviceKpi', extra_details=msg)
-- 
GitLab