Support for auto open projects

Fix #1418
pull/638/head
Julien Duponchelle 8 years ago
parent 12735ff36e
commit ac085126fc
No known key found for this signature in database
GPG Key ID: CE8B29639E07F5E8

@ -99,7 +99,11 @@ class Controller:
for c in data["computes"]:
yield from self.add_compute(**c)
# Preload the list of projects from disk
@asyncio.coroutine
def load_projects(self):
"""
Preload the list of projects from disk
"""
server_config = Config.instance().get_section_config("Server")
projects_path = os.path.expanduser(server_config.get("projects_path", "~/GNS3/projects"))
os.makedirs(projects_path, exist_ok=True)

@ -292,10 +292,15 @@ class WebServer:
log.info("Starting server on {}:{}".format(self._host, self._port))
self._handler = app.make_handler(handler=RequestHandler)
server = self._run_application(self._handler, ssl_context)
self._loop.run_until_complete(server)
self._signal_handling()
self._exit_handling()
# Now the compute is initialized we can load the projects
if server_config.getboolean("controller"):
asyncio.async(Controller.instance().load_projects())
if server_config.getboolean("shell"):
asyncio.async(self.start_shell())

@ -121,7 +121,7 @@ def test_load_projects(controller, projects_dir, async_run):
with open(os.path.join(projects_dir, "project1", "project1.gns3"), "w+") as f:
f.write("")
with asyncio_patch("gns3server.controller.Controller.load_project") as mock_load_project:
async_run(controller.load())
async_run(controller.load_projects())
mock_load_project.assert_called_with(os.path.join(projects_dir, "project1", "project1.gns3"), load=False)

@ -506,4 +506,3 @@ def test_suspend_all(project, async_run):
compute.post = AsyncioMagicMock()
async_run(project.suspend_all())
assert len(compute.post.call_args_list) == 10

Loading…
Cancel
Save