mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-17 13:01:12 +00:00
Fix multiple resource error
This commit is contained in:
@@ -266,7 +266,7 @@ class HostNode(BaseROS2DeviceNode):
|
|||||||
old_uuid = reverse_uuid_mapping.get(sub_node.res_content.uuid)
|
old_uuid = reverse_uuid_mapping.get(sub_node.res_content.uuid)
|
||||||
if old_uuid:
|
if old_uuid:
|
||||||
# 找到旧UUID,使用UUID查找
|
# 找到旧UUID,使用UUID查找
|
||||||
resource_instance = device_tracker.figure_resource({"uuid": old_uuid})
|
resource_instance = device_tracker.uuid_to_resources.get(old_uuid)
|
||||||
else:
|
else:
|
||||||
# 未找到旧UUID,使用name查找
|
# 未找到旧UUID,使用name查找
|
||||||
resource_instance = device_tracker.figure_resource(
|
resource_instance = device_tracker.figure_resource(
|
||||||
|
|||||||
@@ -868,8 +868,9 @@ class DeviceNodeResourceTracker(object):
|
|||||||
def process(res):
|
def process(res):
|
||||||
current_uuid = self._get_resource_attr(res, "uuid", "unilabos_uuid")
|
current_uuid = self._get_resource_attr(res, "uuid", "unilabos_uuid")
|
||||||
if current_uuid:
|
if current_uuid:
|
||||||
|
old = self.uuid_to_resources.get(current_uuid)
|
||||||
self.uuid_to_resources[current_uuid] = res
|
self.uuid_to_resources[current_uuid] = res
|
||||||
logger.debug(f"收集资源UUID映射: {current_uuid} -> {res}")
|
logger.debug(f"收集资源UUID映射: {current_uuid} -> {res} {'' if old is None else f'(覆盖旧值: {old})'}")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
self._traverse_and_process(resource, process)
|
self._traverse_and_process(resource, process)
|
||||||
@@ -907,13 +908,6 @@ class DeviceNodeResourceTracker(object):
|
|||||||
for r in self.resources:
|
for r in self.resources:
|
||||||
if id(r) == id(resource):
|
if id(r) == id(resource):
|
||||||
return
|
return
|
||||||
if isinstance(resource, dict):
|
|
||||||
uid = resource.get("uuid", None)
|
|
||||||
else:
|
|
||||||
uid = getattr(resource, "unilabos_uuid", None)
|
|
||||||
if uid and uid in self.uuid_to_resources:
|
|
||||||
self.remove_resource(self.uuid_to_resources[uid])
|
|
||||||
logger.warning(f"资源 UUID {uid} 已存在,覆盖为: {resource}")
|
|
||||||
self.resources.append(resource)
|
self.resources.append(resource)
|
||||||
# 递归收集uuid映射
|
# 递归收集uuid映射
|
||||||
self._collect_uuid_mapping(resource)
|
self._collect_uuid_mapping(resource)
|
||||||
|
|||||||
Reference in New Issue
Block a user