mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-17 04:51:10 +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)
|
||||
if old_uuid:
|
||||
# 找到旧UUID,使用UUID查找
|
||||
resource_instance = device_tracker.figure_resource({"uuid": old_uuid})
|
||||
resource_instance = device_tracker.uuid_to_resources.get(old_uuid)
|
||||
else:
|
||||
# 未找到旧UUID,使用name查找
|
||||
resource_instance = device_tracker.figure_resource(
|
||||
|
||||
@@ -868,8 +868,9 @@ class DeviceNodeResourceTracker(object):
|
||||
def process(res):
|
||||
current_uuid = self._get_resource_attr(res, "uuid", "unilabos_uuid")
|
||||
if current_uuid:
|
||||
old = self.uuid_to_resources.get(current_uuid)
|
||||
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
|
||||
|
||||
self._traverse_and_process(resource, process)
|
||||
@@ -907,13 +908,6 @@ class DeviceNodeResourceTracker(object):
|
||||
for r in self.resources:
|
||||
if id(r) == id(resource):
|
||||
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)
|
||||
# 递归收集uuid映射
|
||||
self._collect_uuid_mapping(resource)
|
||||
|
||||
Reference in New Issue
Block a user