mirror of
https://github.com/GNS3/gns3-server
synced 2024-11-24 17:28:08 +00:00
Load meta of the project on loading time (Fixes #2225)
This commit is contained in:
parent
4fc29504f2
commit
b0783eeccc
@ -739,7 +739,28 @@ class Project:
|
|||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
try:
|
try:
|
||||||
topology = load_topology(path)["topology"]
|
project_data = load_topology(path)
|
||||||
|
|
||||||
|
#load meta of project
|
||||||
|
keys_to_load = [
|
||||||
|
"auto_start",
|
||||||
|
"auto_close",
|
||||||
|
"auto_open",
|
||||||
|
"scene_height",
|
||||||
|
"scene_width",
|
||||||
|
"zoom",
|
||||||
|
"show_layers",
|
||||||
|
"snap_to_grid",
|
||||||
|
"show_grid",
|
||||||
|
"show_interface_labels"
|
||||||
|
]
|
||||||
|
|
||||||
|
for key in keys_to_load:
|
||||||
|
val = project_data.get(key, None)
|
||||||
|
if val is not None:
|
||||||
|
setattr(self, key, val)
|
||||||
|
|
||||||
|
topology = project_data["topology"]
|
||||||
for compute in topology.get("computes", []):
|
for compute in topology.get("computes", []):
|
||||||
yield from self.controller.add_compute(**compute)
|
yield from self.controller.add_compute(**compute)
|
||||||
for node in topology.get("nodes", []):
|
for node in topology.get("nodes", []):
|
||||||
|
@ -23,6 +23,7 @@ import aiohttp
|
|||||||
from tests.utils import asyncio_patch, AsyncioMagicMock
|
from tests.utils import asyncio_patch, AsyncioMagicMock
|
||||||
|
|
||||||
from gns3server.controller.compute import Compute
|
from gns3server.controller.compute import Compute
|
||||||
|
from gns3server.controller.project import Project
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
@ -34,6 +35,8 @@ def demo_topology():
|
|||||||
"auto_close": True,
|
"auto_close": True,
|
||||||
"auto_open": False,
|
"auto_open": False,
|
||||||
"auto_start": False,
|
"auto_start": False,
|
||||||
|
"scene_height": 500,
|
||||||
|
"scene_width": 700,
|
||||||
"name": "demo",
|
"name": "demo",
|
||||||
"project_id": "3c1be6f9-b4ba-4737-b209-63c47c23359f",
|
"project_id": "3c1be6f9-b4ba-4737-b209-63c47c23359f",
|
||||||
"revision": 5,
|
"revision": 5,
|
||||||
@ -142,7 +145,7 @@ def demo_topology():
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def test_open(controller, tmpdir, demo_topology, async_run, http_server):
|
def test_load_project(controller, tmpdir, demo_topology, async_run, http_server):
|
||||||
with open(str(tmpdir / "demo.gns3"), "w+") as f:
|
with open(str(tmpdir / "demo.gns3"), "w+") as f:
|
||||||
json.dump(demo_topology, f)
|
json.dump(demo_topology, f)
|
||||||
|
|
||||||
@ -160,6 +163,45 @@ def test_open(controller, tmpdir, demo_topology, async_run, http_server):
|
|||||||
assert len(project.drawings) == 1
|
assert len(project.drawings) == 1
|
||||||
|
|
||||||
assert project.name == "demo"
|
assert project.name == "demo"
|
||||||
|
assert project.scene_height == 500
|
||||||
|
assert project.scene_width == 700
|
||||||
|
|
||||||
|
|
||||||
|
def test_open(controller, tmpdir, demo_topology, async_run, http_server):
|
||||||
|
simple_topology = {
|
||||||
|
"auto_close": True,
|
||||||
|
"auto_open": False,
|
||||||
|
"auto_start": False,
|
||||||
|
"scene_height": 500,
|
||||||
|
"scene_width": 700,
|
||||||
|
"name": "demo",
|
||||||
|
"project_id": "3c1be6f9-b4ba-4737-b209-63c47c23359f",
|
||||||
|
"revision": 5,
|
||||||
|
"topology": {
|
||||||
|
"computes": [],
|
||||||
|
"drawings": [],
|
||||||
|
"links": [],
|
||||||
|
"nodes": []
|
||||||
|
},
|
||||||
|
"type": "topology",
|
||||||
|
"version": "2.0.0"
|
||||||
|
}
|
||||||
|
|
||||||
|
with open(str(tmpdir / "demo.gns3"), "w+") as f:
|
||||||
|
json.dump(simple_topology, f)
|
||||||
|
|
||||||
|
project = Project(
|
||||||
|
name="demo",
|
||||||
|
project_id="64ba8408-afbf-4b66-9cdd-1fd854427478",
|
||||||
|
path=str(tmpdir), controller=controller, filename="demo.gns3", status="closed")
|
||||||
|
|
||||||
|
async_run(project.open())
|
||||||
|
|
||||||
|
assert project.status == "opened"
|
||||||
|
|
||||||
|
assert project.name == "demo"
|
||||||
|
assert project.scene_height == 500
|
||||||
|
assert project.scene_width == 700
|
||||||
|
|
||||||
|
|
||||||
def test_open_missing_compute(controller, tmpdir, demo_topology, async_run, http_server):
|
def test_open_missing_compute(controller, tmpdir, demo_topology, async_run, http_server):
|
||||||
|
Loading…
Reference in New Issue
Block a user