From b1ae884bf061d10ac850c8a8d5e5a2a1786fdf0c Mon Sep 17 00:00:00 2001 From: Julien Duponchelle Date: Wed, 11 Jan 2017 19:20:12 +0100 Subject: [PATCH] Drop NAT port from cloud from old topologies It was almost not used (only one occurrence in the whole beta test). Fix #844 --- gns3server/controller/topology.py | 9 +- .../1_5_cloud_nat/after/1_5_cloud_nat.gns3 | 53 ++++++++ .../1_5_cloud_nat/before/1_5_cloud_nat.gns3 | 116 ++++++++++++++++++ 3 files changed, 176 insertions(+), 2 deletions(-) create mode 100644 tests/topologies/1_5_cloud_nat/after/1_5_cloud_nat.gns3 create mode 100644 tests/topologies/1_5_cloud_nat/before/1_5_cloud_nat.gns3 diff --git a/gns3server/controller/topology.py b/gns3server/controller/topology.py index b5b87322a..85d4f0fc6 100644 --- a/gns3server/controller/topology.py +++ b/gns3server/controller/topology.py @@ -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"])) @@ -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" @@ -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"])) @@ -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): diff --git a/tests/topologies/1_5_cloud_nat/after/1_5_cloud_nat.gns3 b/tests/topologies/1_5_cloud_nat/after/1_5_cloud_nat.gns3 new file mode 100644 index 000000000..d3304e1d1 --- /dev/null +++ b/tests/topologies/1_5_cloud_nat/after/1_5_cloud_nat.gns3 @@ -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" +} diff --git a/tests/topologies/1_5_cloud_nat/before/1_5_cloud_nat.gns3 b/tests/topologies/1_5_cloud_nat/before/1_5_cloud_nat.gns3 new file mode 100644 index 000000000..9518c472f --- /dev/null +++ b/tests/topologies/1_5_cloud_nat/before/1_5_cloud_nat.gns3 @@ -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" +} \ No newline at end of file