Fix multiple resource error

This commit is contained in:
Xuwznln
2025-10-14 01:45:08 +08:00
parent 635a332b4e
commit ca027bf0eb
2 changed files with 3 additions and 9 deletions

View File

@@ -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(

View File

@@ -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)