mirror of
https://github.com/GNS3/gns3-server.git
synced 2025-02-06 11:09:12 +00:00
Suppport ~/GNS3/symbols
This commit is contained in:
parent
5b4e668eb5
commit
bf154049d2
@ -19,6 +19,7 @@ import os
|
|||||||
|
|
||||||
|
|
||||||
from ..utils.get_resource import get_resource
|
from ..utils.get_resource import get_resource
|
||||||
|
from ..config import Config
|
||||||
|
|
||||||
|
|
||||||
class Symbols:
|
class Symbols:
|
||||||
@ -42,10 +43,29 @@ class Symbols:
|
|||||||
'builtin': True,
|
'builtin': True,
|
||||||
})
|
})
|
||||||
self._symbols_path[symbol_id] = os.path.join(get_resource("symbols"), file)
|
self._symbols_path[symbol_id] = os.path.join(get_resource("symbols"), file)
|
||||||
|
directory = self._symbol_path()
|
||||||
|
if directory:
|
||||||
|
for file in os.listdir(directory):
|
||||||
|
if file.startswith('.'):
|
||||||
|
continue
|
||||||
|
symbol_id = file
|
||||||
|
symbols.append({
|
||||||
|
'symbol_id': symbol_id,
|
||||||
|
'filename': file,
|
||||||
|
'builtin': False,
|
||||||
|
})
|
||||||
|
self._symbols_path[symbol_id] = os.path.join(get_resource("symbols"), file)
|
||||||
|
|
||||||
|
|
||||||
symbols.sort(key=lambda x: x["filename"])
|
symbols.sort(key=lambda x: x["filename"])
|
||||||
|
|
||||||
#TODO: support ~/GNS3/symbols directory
|
|
||||||
return symbols
|
return symbols
|
||||||
|
|
||||||
|
def _symbol_path(self):
|
||||||
|
directory = os.path.expanduser(Config.instance().get_section_config("Server").get("symbols_path", "~/GNS3/symbols"))
|
||||||
|
if directory:
|
||||||
|
os.makedirs(directory, exist_ok=True)
|
||||||
|
return directory
|
||||||
|
|
||||||
def get_path(self, symbol_id):
|
def get_path(self, symbol_id):
|
||||||
return self._symbols_path[symbol_id]
|
return self._symbols_path[symbol_id]
|
||||||
|
@ -204,6 +204,7 @@ def run_around_tests(monkeypatch, port_manager, controller, config):
|
|||||||
port_manager._instance = port_manager
|
port_manager._instance = port_manager
|
||||||
os.makedirs(os.path.join(tmppath, 'projects'))
|
os.makedirs(os.path.join(tmppath, 'projects'))
|
||||||
config.set("Server", "projects_path", os.path.join(tmppath, 'projects'))
|
config.set("Server", "projects_path", os.path.join(tmppath, 'projects'))
|
||||||
|
config.set("Server", "symbols_path", os.path.join(tmppath, 'symbols'))
|
||||||
config.set("Server", "images_path", os.path.join(tmppath, 'images'))
|
config.set("Server", "images_path", os.path.join(tmppath, 'images'))
|
||||||
config.set("Server", "ubridge_path", os.path.join(tmppath, 'bin', 'ubridge'))
|
config.set("Server", "ubridge_path", os.path.join(tmppath, 'bin', 'ubridge'))
|
||||||
config.set("Server", "auth", False)
|
config.set("Server", "auth", False)
|
||||||
@ -243,6 +244,17 @@ def images_dir(config):
|
|||||||
return path
|
return path
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def symbols_dir(config):
|
||||||
|
"""
|
||||||
|
Get the location of symbols
|
||||||
|
"""
|
||||||
|
path = config.get_section_config("Server").get("symbols_path")
|
||||||
|
os.makedirs(path, exist_ok=True)
|
||||||
|
print(path)
|
||||||
|
return path
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def projects_dir(config):
|
def projects_dir(config):
|
||||||
"""
|
"""
|
||||||
|
@ -16,22 +16,35 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
|
||||||
from gns3server.controller.symbols import Symbols
|
from gns3server.controller.symbols import Symbols
|
||||||
from gns3server.utils.get_resource import get_resource
|
from gns3server.utils.get_resource import get_resource
|
||||||
|
|
||||||
|
|
||||||
def test_list():
|
def test_list(symbols_dir):
|
||||||
|
|
||||||
|
print(symbols_dir)
|
||||||
|
with open(os.path.join(symbols_dir, "linux.svg"), "w+") as f:
|
||||||
|
pass
|
||||||
|
|
||||||
symbols = Symbols()
|
symbols = Symbols()
|
||||||
assert {
|
assert {
|
||||||
'symbol_id': ':/symbols/firewall.svg',
|
'symbol_id': ':/symbols/firewall.svg',
|
||||||
'filename': 'firewall.svg',
|
'filename': 'firewall.svg',
|
||||||
'builtin': True
|
'builtin': True
|
||||||
} in symbols.list()
|
} in symbols.list()
|
||||||
assert symbols
|
assert {
|
||||||
|
'symbol_id': 'linux.svg',
|
||||||
|
'filename': 'linux.svg',
|
||||||
|
'builtin': False
|
||||||
|
} in symbols.list()
|
||||||
|
|
||||||
|
|
||||||
def test_get_path():
|
def test_get_path():
|
||||||
symbols = Symbols()
|
symbols = Symbols()
|
||||||
assert symbols.get_path(':/symbols/firewall.svg') == get_resource("symbols/firewall.svg")
|
assert symbols.get_path(':/symbols/firewall.svg') == get_resource("symbols/firewall.svg")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user