Skip to content

Commit

Permalink
Drop NAT port from cloud from old topologies
Browse files Browse the repository at this point in the history
It was almost not used (only one occurrence in the whole
beta test).

Fix #844
  • Loading branch information
julien-duponchelle committed Jan 11, 2017
1 parent 1bf54bc commit b1ae884
Show file tree
Hide file tree
Showing 3 changed files with 176 additions and 2 deletions.
9 changes: 7 additions & 2 deletions gns3server/controller/topology.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,9 +295,9 @@ def _convert_1_3_later(topo, topo_path):
elif old_node["type"] == "IOUDevice":
node["node_type"] = "iou"
elif old_node["type"] == "Cloud":
_create_cloud(node, old_node, ":/symbols/cloud.svg")
old_node["ports"] = _create_cloud(node, old_node, ":/symbols/cloud.svg")
elif old_node["type"] == "Host":
_create_cloud(node, old_node, ":/symbols/computer.svg")
old_node["ports"] = _create_cloud(node, old_node, ":/symbols/computer.svg")
else:
raise NotImplementedError("Conversion of {} is not supported".format(old_node["type"]))

Expand Down Expand Up @@ -483,6 +483,7 @@ def _create_cloud(node, old_node, icon):
del old_node["properties"]["nios"]

ports = []
keep_ports = []
for old_port in old_node.get("ports", []):
if old_port["name"].startswith("nio_gen_eth"):
port_type = "ethernet"
Expand All @@ -492,6 +493,8 @@ def _create_cloud(node, old_node, icon):
port_type = "tap"
elif old_port["name"].startswith("nio_udp"):
port_type = "udp"
elif old_port["name"].startswith("nio_nat"):
continue
else:
raise NotImplementedError("The conversion of cloud with {} is not supported".format(old_port["name"]))

Expand All @@ -512,10 +515,12 @@ def _create_cloud(node, old_node, icon):
"port_number": len(ports) + 1,
"type": port_type
}
keep_ports.append(old_port)
ports.append(port)

node["properties"]["ports_mapping"] = ports
node["properties"]["interfaces"] = []
return keep_ports


def _convert_snapshots(topo_dir):
Expand Down
53 changes: 53 additions & 0 deletions tests/topologies/1_5_cloud_nat/after/1_5_cloud_nat.gns3
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"auto_start": false,
"name": "untitled",
"project_id": "ANYSTR",
"revision": 6,
"topology": {
"computes": [
{
"compute_id": "local",
"host": "127.0.0.1",
"name": "Local",
"port": 3080,
"protocol": "http"
}
],
"drawings": [],
"links": [
],
"nodes": [
{
"compute_id": "local",
"console": null,
"console_type": null,
"first_port_name": null,
"label": {
"rotation": 0,
"style": "font-family: TypeWriter;font-size: 10;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
"text": "Cloud 2",
"x": 55,
"y": -25
},
"name": "Cloud 2",
"node_id": "ANYSTR",
"node_type": "cloud",
"port_name_format": "Ethernet{0}",
"port_segment_size": 0,
"properties": {
"interfaces": [
],
"ports_mapping": [
]
},
"symbol": ":/symbols/cloud.svg",
"x": -144,
"y": -135,
"z": 1
},
{"name": "core-1", "first_port_name": null, "symbol": ":/symbols/cloud.svg", "node_type": "nat", "label": {"style": "font-family: TypeWriter;font-size: 10;font-weight: bold;fill: #000000;fill-opacity: 1.0;", "rotation": 0, "y": -25, "x": 10, "text": "core-1"}, "console_type": null, "port_name_format": "Ethernet{0}", "node_id": "c6de0f4e-101d-4c4f-b5a0-47df57e8a893", "y": 0, "z": 1, "compute_id": "local", "properties": {"ports": [{"name": "nat0", "type": "ethernet", "interface": "eth1", "port_number": 0}]}, "port_segment_size": 0, "console": null, "x": 72}
]
},
"type": "topology",
"version": "ANYSTR"
}
116 changes: 116 additions & 0 deletions tests/topologies/1_5_cloud_nat/before/1_5_cloud_nat.gns3
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
{
"auto_start": false,
"name": "untitled",
"project_id": "63c75180-b540-4389-94cd-62f4bc6a5e2b",
"revision": 4,
"topology": {
"links": [
{
"description": "Link from core-1 port Ethernet0 to Cloud 2 port nio_nat:42",
"destination_node_id": 3,
"destination_port_id": 3,
"id": 3,
"source_node_id": 7,
"source_port_id": 21
}
],
"nodes": [
{
"description": "Cloud",
"id": 3,
"label": {
"color": "#ff000000",
"font": "TypeWriter,10,-1,5,75,0,0,0,0,0",
"text": "Cloud 2",
"x": 55.6015625,
"y": -25.0
},
"ports": [
{
"description": "connected to core-1 on port Ethernet0",
"id": 3,
"link_id": 3,
"name": "nio_nat:42",
"nio": "NIO_NAT",
"stub": true
}
],
"properties": {
"name": "Cloud 2",
"nios": [
"nio_nat:42"
]
},
"server_id": 1,
"type": "Cloud",
"x": -144.5,
"y": -135.0
},
{
"description": "QEMU VM",
"id": 7,
"label": {
"color": "#ff000000",
"font": "TypeWriter,10,-1,5,75,0,0,0,0,0",
"text": "core-1",
"x": 10.9765625,
"y": -25.0
},
"linked_clone": true,
"port_name_format": "Ethernet{0}",
"ports": [
{
"adapter_number": 0,
"description": "connected to Cloud 2 on port nio_nat:42",
"id": 21,
"link_id": 3,
"name": "Ethernet0",
"nio": "NIO_NAT",
"port_number": 0
}
],
"properties": {
"acpi_shutdown": false,
"adapter_type": "e1000",
"adapters": 1,
"boot_priority": "c",
"console": 5000,
"console_type": "telnet",
"cpu_throttling": 0,
"cpus": 1,
"hda_disk_image": "core-linux-6.4-internet-0.1.img",
"hda_disk_image_md5sum": "8ebc5a6ec53a1c05b7aa101b5ceefe31",
"hda_disk_interface": "ide",
"hdb_disk_interface": "ide",
"hdc_disk_interface": "ide",
"hdd_disk_interface": "ide",
"legacy_networking": false,
"mac_address": "00:5e:2b:a8:93:00",
"name": "core-1",
"options": "-nographic",
"platform": "x86_64",
"process_priority": "normal",
"qemu_path": "/usr/local/bin/qemu-system-x86_64",
"ram": 256
},
"server_id": 1,
"type": "QemuVM",
"vm_id": "c6de0f4e-101d-4c4f-b5a0-47df57e8a893",
"x": 72.5,
"y": -0.5
}
],
"servers": [
{
"host": "127.0.0.1",
"id": 1,
"local": true,
"port": 3080,
"protocol": "http",
"vm": false
}
]
},
"type": "topology",
"version": "1.5.3dev2"
}

0 comments on commit b1ae884

Please sign in to comment.