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

Support for auto open projects

Fix #1418
This commit is contained in:
Julien Duponchelle 2016-08-16 16:04:20 +02:00
parent 12735ff36e
commit ac085126fc
No known key found for this signature in database
GPG Key ID: CE8B29639E07F5E8
4 changed files with 11 additions and 3 deletions

View File

@ -99,7 +99,11 @@ class Controller:
for c in data["computes"]: for c in data["computes"]:
yield from self.add_compute(**c) 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") server_config = Config.instance().get_section_config("Server")
projects_path = os.path.expanduser(server_config.get("projects_path", "~/GNS3/projects")) projects_path = os.path.expanduser(server_config.get("projects_path", "~/GNS3/projects"))
os.makedirs(projects_path, exist_ok=True) os.makedirs(projects_path, exist_ok=True)

View File

@ -292,10 +292,15 @@ class WebServer:
log.info("Starting server on {}:{}".format(self._host, self._port)) log.info("Starting server on {}:{}".format(self._host, self._port))
self._handler = app.make_handler(handler=RequestHandler) self._handler = app.make_handler(handler=RequestHandler)
server = self._run_application(self._handler, ssl_context) server = self._run_application(self._handler, ssl_context)
self._loop.run_until_complete(server) self._loop.run_until_complete(server)
self._signal_handling() self._signal_handling()
self._exit_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"): if server_config.getboolean("shell"):
asyncio.async(self.start_shell()) asyncio.async(self.start_shell())

View File

@ -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: with open(os.path.join(projects_dir, "project1", "project1.gns3"), "w+") as f:
f.write("") f.write("")
with asyncio_patch("gns3server.controller.Controller.load_project") as mock_load_project: 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) mock_load_project.assert_called_with(os.path.join(projects_dir, "project1", "project1.gns3"), load=False)

View File

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