1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-11-28 11:18:11 +00:00

Optimize project closing by avoiding closing unused modules

Fix #627
This commit is contained in:
Julien Duponchelle 2016-08-16 19:41:59 +02:00
parent a4023c0298
commit 796ebf7210
No known key found for this signature in database
GPG Key ID: CE8B29639E07F5E8
2 changed files with 19 additions and 2 deletions

View File

@ -58,6 +58,13 @@ class BaseManager:
self._port_manager = None
self._config = Config.instance()
@property
def nodes(self):
"""
List of nodes manage by the module
"""
return self._nodes.values()
@classmethod
def instance(cls):
"""

View File

@ -278,11 +278,21 @@ class Project:
Closes the project, but keep information on disk
"""
project_nodes_id = set([n.id for n in self.nodes])
for module in self.compute():
yield from module.instance().project_closing(self)
module_nodes_id = set([n.id for n in module.instance().nodes])
# We close the project only for the modules using it
if len(module_nodes_id & project_nodes_id):
yield from module.instance().project_closing(self)
yield from self._close_and_clean(False)
for module in self.compute():
yield from module.instance().project_closed(self)
module_nodes_id = set([n.id for n in module.instance().nodes])
# We close the project only for the modules using it
if len(module_nodes_id & project_nodes_id):
yield from module.instance().project_closed(self)
try:
if os.path.exists(self.tmp_working_directory()):