From 9d7c482288e1e33b8731a5e92d0825c27efc2e65 Mon Sep 17 00:00:00 2001 From: YueGuobin Date: Thu, 11 Jun 2026 01:26:43 +0800 Subject: [PATCH] fix: Skip always-running nodes in start_all/stop_all Always-running node types (Ethernet switch, Cloud, NAT, etc.) return 405 when start/stop is called. is_always_running() already tracks these types; start_all/stop_all now skip them. --- gns3server/controller/project.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gns3server/controller/project.py b/gns3server/controller/project.py index 0526df838..463ff5345 100644 --- a/gns3server/controller/project.py +++ b/gns3server/controller/project.py @@ -1532,21 +1532,23 @@ class Project: @open_required async def start_all(self): """ - Start all nodes + Start all nodes (except always-running types like Ethernet switch, Cloud, NAT, etc.) """ pool = Pool(concurrency=3) for node in self.nodes.values(): - pool.append(node.start) + if not node.is_always_running(): + pool.append(node.start) await pool.join() @open_required async def stop_all(self): """ - Stop all nodes + Stop all nodes (except always-running types like Ethernet switch, Cloud, NAT, etc.) """ pool = Pool(concurrency=3) for node in self.nodes.values(): - pool.append(node.stop) + if not node.is_always_running(): + pool.append(node.stop) await pool.join() @open_required