mirror of
https://github.com/GNS3/gns3-server.git
synced 2024-12-30 09:38:53 +00:00
Disallow export of project with VirtualBox linked clone
Fix https://github.com/GNS3/gns3-gui/issues/1824
This commit is contained in:
parent
a191029c4f
commit
e04eb44a15
@ -136,6 +136,8 @@ def _export_project_file(project, path, z, include_images, keep_compute_id, allo
|
|||||||
if "topology" in topology:
|
if "topology" in topology:
|
||||||
if "nodes" in topology["topology"]:
|
if "nodes" in topology["topology"]:
|
||||||
for node in topology["topology"]["nodes"]:
|
for node in topology["topology"]["nodes"]:
|
||||||
|
if node["node_type"] == "virtualbox" and node.get("properties", {}).get("linked_clone"):
|
||||||
|
raise aiohttp.web.HTTPConflict(text="Topology with a linked {} clone could not be exported. Use qemu instead.".format(node["node_type"]))
|
||||||
if not allow_all_nodes and node["node_type"] in ["virtualbox", "vmware", "cloud"]:
|
if not allow_all_nodes and node["node_type"] in ["virtualbox", "vmware", "cloud"]:
|
||||||
raise aiohttp.web.HTTPConflict(text="Topology with a {} could not be exported".format(node["node_type"]))
|
raise aiohttp.web.HTTPConflict(text="Topology with a {} could not be exported".format(node["node_type"]))
|
||||||
|
|
||||||
|
@ -190,9 +190,9 @@ def test_export_disallow_some_type(tmpdir, project, async_run):
|
|||||||
topology = {
|
topology = {
|
||||||
"topology": {
|
"topology": {
|
||||||
"nodes": [
|
"nodes": [
|
||||||
{
|
{
|
||||||
"node_type": "virtualbox"
|
"node_type": "cloud"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -204,6 +204,24 @@ def test_export_disallow_some_type(tmpdir, project, async_run):
|
|||||||
z = async_run(export_project(project, str(tmpdir)))
|
z = async_run(export_project(project, str(tmpdir)))
|
||||||
z = async_run(export_project(project, str(tmpdir), allow_all_nodes=True))
|
z = async_run(export_project(project, str(tmpdir), allow_all_nodes=True))
|
||||||
|
|
||||||
|
# VirtualBox is always disallowed
|
||||||
|
topology = {
|
||||||
|
"topology": {
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"node_type": "virtualbox",
|
||||||
|
"properties": {
|
||||||
|
"linked_clone": True
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
with open(os.path.join(path, "test.gns3"), 'w+') as f:
|
||||||
|
json.dump(topology, f)
|
||||||
|
with pytest.raises(aiohttp.web.HTTPConflict):
|
||||||
|
z = async_run(export_project(project, str(tmpdir), allow_all_nodes=True))
|
||||||
|
|
||||||
|
|
||||||
def test_export_fix_path(tmpdir, project, async_run):
|
def test_export_fix_path(tmpdir, project, async_run):
|
||||||
"""
|
"""
|
||||||
|
@ -427,7 +427,7 @@ def test_duplicate(project, async_run, controller):
|
|||||||
remote_vpcs = async_run(project.add_node(compute, "test", None, node_type="vpcs", properties={"startup_config": "test.cfg"}))
|
remote_vpcs = async_run(project.add_node(compute, "test", None, node_type="vpcs", properties={"startup_config": "test.cfg"}))
|
||||||
|
|
||||||
# We allow node not allowed for standard import / export
|
# We allow node not allowed for standard import / export
|
||||||
remote_virtualbox = async_run(project.add_node(compute, "test", None, node_type="virtualbox", properties={"startup_config": "test.cfg"}))
|
remote_virtualbox = async_run(project.add_node(compute, "test", None, node_type="vmware", properties={"startup_config": "test.cfg"}))
|
||||||
|
|
||||||
new_project = async_run(project.duplicate(name="Hello"))
|
new_project = async_run(project.duplicate(name="Hello"))
|
||||||
assert new_project.id != project.id
|
assert new_project.id != project.id
|
||||||
|
Loading…
Reference in New Issue
Block a user