mirror of
https://github.com/GNS3/gns3-server
synced 2024-11-24 09:18:08 +00:00
Set a location by default
This commit is contained in:
parent
7bed9f56bc
commit
8e249b670d
@ -122,6 +122,17 @@ class Config(object):
|
||||
return self._config["DEFAULT"]
|
||||
return self._config[section]
|
||||
|
||||
def set_section_config(self, section, content):
|
||||
"""
|
||||
Set a specific configuration section. It's not
|
||||
dumped on the disk.
|
||||
|
||||
:param section: Section name
|
||||
:param content: A dictonary with section content
|
||||
"""
|
||||
|
||||
self._config[section] = content
|
||||
|
||||
@staticmethod
|
||||
def instance():
|
||||
"""
|
||||
|
@ -44,11 +44,11 @@ class Project:
|
||||
raise aiohttp.web.HTTPBadRequest(text="{} is not a valid UUID".format(uuid))
|
||||
self._uuid = uuid
|
||||
|
||||
config = Config.instance().get_section_config("Server")
|
||||
self._location = location
|
||||
if location is None:
|
||||
self._location = tempfile.mkdtemp()
|
||||
self._location = config.get("project_directory", self._get_default_project_directory())
|
||||
else:
|
||||
config = Config.instance().get_section_config("Server")
|
||||
if config.get("local", False) is False:
|
||||
raise aiohttp.web.HTTPForbidden(text="You are not allowed to modifiy the project directory location")
|
||||
|
||||
@ -61,6 +61,19 @@ class Project:
|
||||
except OSError as e:
|
||||
raise aiohttp.web.HTTPInternalServerError(text="Could not create project directory: {}".format(e))
|
||||
|
||||
def _get_default_project_directory(self):
|
||||
"""
|
||||
Return the default location for the project directory
|
||||
depending of the operating system
|
||||
"""
|
||||
|
||||
path = os.path.normpath(os.path.expanduser("~/GNS3/projects"))
|
||||
try:
|
||||
os.makedirs(path, exist_ok=True)
|
||||
except OSError as e:
|
||||
raise aiohttp.web.HTTPInternalServerError(text="Could not create project directory: {}".format(e))
|
||||
return path
|
||||
|
||||
@property
|
||||
def uuid(self):
|
||||
|
||||
|
@ -18,7 +18,11 @@
|
||||
import pytest
|
||||
import socket
|
||||
import asyncio
|
||||
import tempfile
|
||||
import shutil
|
||||
from aiohttp import web
|
||||
|
||||
from gns3server.config import Config
|
||||
from gns3server.web.route import Route
|
||||
# TODO: get rid of *
|
||||
from gns3server.handlers import *
|
||||
@ -100,3 +104,17 @@ def free_console_port(request, port_manager):
|
||||
# the test do whatever the test want
|
||||
port_manager.release_console_port(port)
|
||||
return port
|
||||
|
||||
|
||||
@pytest.yield_fixture(autouse=True)
|
||||
def run_around_tests():
|
||||
tmppath = tempfile.mkdtemp()
|
||||
|
||||
config = Config.instance()
|
||||
server_section = config.get_section_config("Server")
|
||||
server_section["project_directory"] = tmppath
|
||||
config.set_section_config("Server", server_section)
|
||||
|
||||
yield
|
||||
|
||||
shutil.rmtree(tmppath)
|
||||
|
@ -130,3 +130,11 @@ def test_project_close_temporary_project(manager):
|
||||
assert os.path.exists(directory)
|
||||
project.close()
|
||||
assert os.path.exists(directory) is False
|
||||
|
||||
|
||||
def test_get_default_project_directory():
|
||||
|
||||
project = Project()
|
||||
path = os.path.normpath(os.path.expanduser("~/GNS3/projects"))
|
||||
assert project._get_default_project_directory() == path
|
||||
assert os.path.exists(path)
|
||||
|
Loading…
Reference in New Issue
Block a user