Merge pull request #2833 from Sanjays2402/fix/delete-project-does-not-start-nodes

Do not start nodes when deleting a project
This commit is contained in:
Jeremy Grossmann 2026-07-26 09:23:12 +02:00 committed by GitHub
commit 6c2a980afc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 3 deletions

View File

@ -917,7 +917,7 @@ class Project:
if self._status != "opened":
try:
await self.open()
await self.open(auto_start=False)
except aiohttp.web.HTTPConflict as e:
# ignore missing images or other conflicts when deleting a project
log.warning(f"Conflict while deleting project: {e}")
@ -998,9 +998,12 @@ class Project:
return os.path.join(self.path, self._filename)
@locking
async def open(self):
async def open(self, auto_start=True):
"""
Load topology elements
:param auto_start: whether the nodes may be started when the project
has auto start enabled
"""
if self._closing:
@ -1114,7 +1117,7 @@ class Project:
self._loading = False
self.emit_controller_notification("project.opened", self.__json__())
# Should we start the nodes when project is open
if self._auto_start:
if self._auto_start and auto_start:
# Start all in the background without waiting for completion
# we ignore errors because we want to let the user open
# their project and fix it

View File

@ -655,6 +655,19 @@ async def test_delete(project):
assert not os.path.exists(project.path)
async def test_delete_does_not_start_nodes(project):
"""
Deleting a project must not start its nodes, even when auto_start is enabled.
"""
project.auto_start = True
project.dump()
await project.close()
project.start_all = AsyncioMagicMock()
await project.delete()
assert not project.start_all.called
async def test_dump(projects_dir):
directory = projects_dir