Skip to content

Commit 8580b84

Browse files
committed
Fix update with different spot and same parent
1 parent 3f80349 commit 8580b84

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

unilabos/ros/nodes/base_device_node.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -844,6 +844,16 @@ def _handle_update(
844844
and original_parent_resource is not None
845845
):
846846
self.transfer_to_new_resource(original_instance, tree, additional_add_params)
847+
else:
848+
# 判断是否变更了resource_site
849+
target_site = original_instance.unilabos_extra.get("update_resource_site")
850+
sites = original_instance.parent.sites if original_instance.parent is not None and hasattr(original_instance.parent, "sites") else None
851+
site_names = list(original_instance.parent._ordering.keys()) if original_instance.parent is not None and hasattr(original_instance.parent, "sites") else []
852+
if target_site is not None and sites is not None and site_names is not None:
853+
site_index = sites.index(original_instance)
854+
site_name = site_names[site_index]
855+
if site_name != target_site:
856+
self.transfer_to_new_resource(original_instance, tree, additional_add_params)
847857

848858
# 加载状态
849859
original_instance.load_all_state(states)
@@ -898,7 +908,14 @@ def _handle_update(
898908
plr_resources.append(tree.root_node)
899909
else:
900910
plr_resources.append(ResourceTreeSet([tree]).to_plr_resources()[0])
911+
new_tree_set = ResourceTreeSet.from_plr_resources(plr_resources)
901912
result = _handle_update(plr_resources, tree_set, additional_add_params)
913+
r = SerialCommand.Request()
914+
r.command = json.dumps(
915+
{"data": {"data": new_tree_set.dump()}, "action": "update"}) # 和Update Resource一致
916+
response: SerialCommand_Response = await self._resource_clients[
917+
"c2s_update_resource_tree"].call_async(r) # type: ignore
918+
self.lab_logger().info(f"确认资源云端 Update 结果: {response.response}")
902919
results.append(result)
903920
elif action == "remove":
904921
result = _handle_remove(resources_uuid)

0 commit comments

Comments
 (0)