mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-08-27 12:30:13 +03:00
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:
commit
6c2a980afc
@ -917,7 +917,7 @@ class Project:
|
|||||||
|
|
||||||
if self._status != "opened":
|
if self._status != "opened":
|
||||||
try:
|
try:
|
||||||
await self.open()
|
await self.open(auto_start=False)
|
||||||
except aiohttp.web.HTTPConflict as e:
|
except aiohttp.web.HTTPConflict as e:
|
||||||
# ignore missing images or other conflicts when deleting a project
|
# ignore missing images or other conflicts when deleting a project
|
||||||
log.warning(f"Conflict while deleting project: {e}")
|
log.warning(f"Conflict while deleting project: {e}")
|
||||||
@ -998,9 +998,12 @@ class Project:
|
|||||||
return os.path.join(self.path, self._filename)
|
return os.path.join(self.path, self._filename)
|
||||||
|
|
||||||
@locking
|
@locking
|
||||||
async def open(self):
|
async def open(self, auto_start=True):
|
||||||
"""
|
"""
|
||||||
Load topology elements
|
Load topology elements
|
||||||
|
|
||||||
|
:param auto_start: whether the nodes may be started when the project
|
||||||
|
has auto start enabled
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if self._closing:
|
if self._closing:
|
||||||
@ -1114,7 +1117,7 @@ class Project:
|
|||||||
self._loading = False
|
self._loading = False
|
||||||
self.emit_controller_notification("project.opened", self.__json__())
|
self.emit_controller_notification("project.opened", self.__json__())
|
||||||
# Should we start the nodes when project is open
|
# 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
|
# Start all in the background without waiting for completion
|
||||||
# we ignore errors because we want to let the user open
|
# we ignore errors because we want to let the user open
|
||||||
# their project and fix it
|
# their project and fix it
|
||||||
|
|||||||
@ -655,6 +655,19 @@ async def test_delete(project):
|
|||||||
assert not os.path.exists(project.path)
|
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):
|
async def test_dump(projects_dir):
|
||||||
|
|
||||||
directory = projects_dir
|
directory = projects_dir
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user