From afb7eca27a14b3d0dd27f409e8b9c06980194952 Mon Sep 17 00:00:00 2001 From: Julien Duponchelle Date: Wed, 26 Oct 2016 12:03:54 +0200 Subject: [PATCH] Fix port naming for atm switch Fix #735 --- gns3server/controller/node.py | 11 +++++++++-- gns3server/controller/ports/atm_port.py | 4 ++++ tests/controller/test_node_port_name.py | 14 +++++++++++--- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/gns3server/controller/node.py b/gns3server/controller/node.py index b0027d957..683568095 100644 --- a/gns3server/controller/node.py +++ b/gns3server/controller/node.py @@ -496,9 +496,16 @@ class Node: self._ports = [] # Some special cases if self._node_type == "atm_switch": - for adapter_number in range(0, len(self.properties["mappings"])): - self._ports.append(PortFactory("ATM{}".format(adapter_number), adapter_number, adapter_number, 0, "atm")) + atm_port = set() + # Mapping is like {"1:0:100": "10:0:200"} + for source, dest in self.properties["mappings"].items(): + atm_port.add(int(source.split(":")[0])) + atm_port.add(int(dest.split(":")[0])) + atm_port = sorted(atm_port) + for port in atm_port: + self._ports.append(PortFactory("{}".format(port), 0, 0, port, "atm")) return + elif self._node_type == "frame_relay_switch": frame_relay_port = set() # Mapping is like {"1:101": "10:202"} diff --git a/gns3server/controller/ports/atm_port.py b/gns3server/controller/ports/atm_port.py index b40d67b56..51da8d869 100644 --- a/gns3server/controller/ports/atm_port.py +++ b/gns3server/controller/ports/atm_port.py @@ -42,6 +42,10 @@ class ATMPort(SerialPort): """ return "a" + @property + def short_name(self): + return "{}".format(self._port_number) + @property def data_link_types(self): """ diff --git a/tests/controller/test_node_port_name.py b/tests/controller/test_node_port_name.py index c2d31a9e3..f6a57fcfe 100644 --- a/tests/controller/test_node_port_name.py +++ b/tests/controller/test_node_port_name.py @@ -195,10 +195,18 @@ def test_list_ports_atm_switch(project, compute): assert node.__json__()["ports"] == [ { - "name": "ATM0", - "short_name": "a0/0", + "name": "1", + "short_name": "1", "data_link_types": {"ATM": "DLT_ATM_RFC1483"}, - "port_number": 0, + "port_number": 1, + "adapter_number": 0, + "link_type": "serial" + }, + { + "name": "10", + "short_name": "10", + "data_link_types": {"ATM": "DLT_ATM_RFC1483"}, + "port_number": 10, "adapter_number": 0, "link_type": "serial" }