From 22369ade49dda6e1ff571a002d83d3894872d665 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sat, 31 Jan 2015 12:01:23 -0700 Subject: [PATCH] Rename port_id to port_number for VPCS and adapter_id for VirtualBox to avoid confusion. --- gns3server/handlers/network_handler.py | 2 +- gns3server/handlers/virtualbox_handler.py | 29 +++++++------ gns3server/handlers/vpcs_handler.py | 12 +++--- gns3server/modules/adapters/adapter.py | 26 ++++++------ .../modules/virtualbox/virtualbox_vm.py | 3 +- gns3server/modules/vpcs/vpcs_vm.py | 42 +++++++++---------- tests/api/test_virtualbox.py | 4 +- tests/api/test_vpcs.py | 6 +-- .../modules/virtualbox/test_virtualbox_vm.py | 1 - 9 files changed, 62 insertions(+), 63 deletions(-) diff --git a/gns3server/handlers/network_handler.py b/gns3server/handlers/network_handler.py index c653c704..87dedc29 100644 --- a/gns3server/handlers/network_handler.py +++ b/gns3server/handlers/network_handler.py @@ -24,7 +24,7 @@ class NetworkHandler: @classmethod @Route.post( - r"/udp", + r"/ports/udp", status_codes={ 201: "UDP port allocated", }, diff --git a/gns3server/handlers/virtualbox_handler.py b/gns3server/handlers/virtualbox_handler.py index 81591828..b164a727 100644 --- a/gns3server/handlers/virtualbox_handler.py +++ b/gns3server/handlers/virtualbox_handler.py @@ -227,10 +227,10 @@ class VirtualBoxHandler: response.set_status(204) @Route.post( - r"/virtualbox/{uuid}/ports/{port_id:\d+}/nio", + r"/virtualbox/{uuid}/ports/{adapter_id:\d+}/nio", parameters={ "uuid": "Instance UUID", - "port_id": "ID of the port where the nio should be added" + "adapter_id": "Adapter where the nio should be added" }, status_codes={ 201: "NIO created", @@ -245,16 +245,16 @@ class VirtualBoxHandler: vbox_manager = VirtualBox.instance() vm = vbox_manager.get_vm(request.match_info["uuid"]) nio = vbox_manager.create_nio(vbox_manager.vboxmanage_path, request.json) - vm.port_add_nio_binding(int(request.match_info["port_id"]), nio) + vm.port_add_nio_binding(int(request.match_info["adapter_id"]), nio) response.set_status(201) response.json(nio) @classmethod @Route.delete( - r"/virtualbox/{uuid}/ports/{port_id:\d+}/nio", + r"/virtualbox/{uuid}/ports/{adapter_id:\d+}/nio", parameters={ "uuid": "Instance UUID", - "port_id": "ID of the port from where the nio should be removed" + "adapter_id": "Adapter from where the nio should be removed" }, status_codes={ 204: "NIO deleted", @@ -266,14 +266,14 @@ class VirtualBoxHandler: vbox_manager = VirtualBox.instance() vm = vbox_manager.get_vm(request.match_info["uuid"]) - vm.port_remove_nio_binding(int(request.match_info["port_id"])) + vm.port_remove_nio_binding(int(request.match_info["adapter_id"])) response.set_status(204) @Route.post( - r"/virtualbox/{uuid}/capture/{port_id:\d+}/start", + r"/virtualbox/{uuid}/capture/{adapter_id:\d+}/start", parameters={ "uuid": "Instance UUID", - "port_id": "ID of the port to start a packet capture" + "adapter_id": "Adapter to start a packet capture" }, status_codes={ 200: "Capture started", @@ -286,17 +286,16 @@ class VirtualBoxHandler: vbox_manager = VirtualBox.instance() vm = vbox_manager.get_vm(request.match_info["uuid"]) - port_id = int(request.match_info["port_id"]) + adapter_id = int(request.match_info["adapter_id"]) pcap_file_path = os.path.join(vm.project.capture_working_directory(), request.json["filename"]) - vm.start_capture(port_id, pcap_file_path) - response.json({"port_id": port_id, - "pcap_file_path": pcap_file_path}) + vm.start_capture(adapter_id, pcap_file_path) + response.json({"pcap_file_path": pcap_file_path}) @Route.post( - r"/virtualbox/{uuid}/capture/{port_id:\d+}/stop", + r"/virtualbox/{uuid}/capture/{adapter_id:\d+}/stop", parameters={ "uuid": "Instance UUID", - "port_id": "ID of the port to stop a packet capture" + "adapter_id": "Adapter to stop a packet capture" }, status_codes={ 204: "Capture stopped", @@ -308,5 +307,5 @@ class VirtualBoxHandler: vbox_manager = VirtualBox.instance() vm = vbox_manager.get_vm(request.match_info["uuid"]) - vm.stop_capture(int(request.match_info["port_id"])) + vm.stop_capture(int(request.match_info["adapter_id"])) response.set_status(204) diff --git a/gns3server/handlers/vpcs_handler.py b/gns3server/handlers/vpcs_handler.py index cc90e806..060ee587 100644 --- a/gns3server/handlers/vpcs_handler.py +++ b/gns3server/handlers/vpcs_handler.py @@ -168,10 +168,10 @@ class VPCSHandler: response.set_status(204) @Route.post( - r"/vpcs/{uuid}/ports/{port_id:\d+}/nio", + r"/vpcs/{uuid}/ports/{port_number:\d+}/nio", parameters={ "uuid": "Instance UUID", - "port_id": "ID of the port where the nio should be added" + "port_number": "Port where the nio should be added" }, status_codes={ 201: "NIO created", @@ -186,16 +186,16 @@ class VPCSHandler: vpcs_manager = VPCS.instance() vm = vpcs_manager.get_vm(request.match_info["uuid"]) nio = vpcs_manager.create_nio(vm.vpcs_path, request.json) - vm.port_add_nio_binding(int(request.match_info["port_id"]), nio) + vm.port_add_nio_binding(int(request.match_info["port_number"]), nio) response.set_status(201) response.json(nio) @classmethod @Route.delete( - r"/vpcs/{uuid}/ports/{port_id:\d+}/nio", + r"/vpcs/{uuid}/ports/{port_number:\d+}/nio", parameters={ "uuid": "Instance UUID", - "port_id": "ID of the port from where the nio should be removed" + "port_number": "Port from where the nio should be removed" }, status_codes={ 204: "NIO deleted", @@ -207,5 +207,5 @@ class VPCSHandler: vpcs_manager = VPCS.instance() vm = vpcs_manager.get_vm(request.match_info["uuid"]) - vm.port_remove_nio_binding(int(request.match_info["port_id"])) + vm.port_remove_nio_binding(int(request.match_info["port_number"])) response.set_status(204) diff --git a/gns3server/modules/adapters/adapter.py b/gns3server/modules/adapters/adapter.py index ade660f9..33c916c4 100644 --- a/gns3server/modules/adapters/adapter.py +++ b/gns3server/modules/adapters/adapter.py @@ -29,8 +29,8 @@ class Adapter(object): self._interfaces = interfaces self._ports = {} - for port_id in range(0, interfaces): - self._ports[port_id] = None + for port_number in range(0, interfaces): + self._ports[port_number] = None def removable(self): """ @@ -42,7 +42,7 @@ class Adapter(object): return True - def port_exists(self, port_id): + def port_exists(self, port_number): """ Checks if a port exists on this adapter. @@ -50,39 +50,39 @@ class Adapter(object): False otherwise. """ - if port_id in self._ports: + if port_number in self._ports: return True return False - def add_nio(self, port_id, nio): + def add_nio(self, port_number, nio): """ Adds a NIO to a port on this adapter. - :param port_id: port ID (integer) + :param port_number: port number (integer) :param nio: NIO instance """ - self._ports[port_id] = nio + self._ports[port_number] = nio - def remove_nio(self, port_id): + def remove_nio(self, port_number): """ Removes a NIO from a port on this adapter. - :param port_id: port ID (integer) + :param port_number: port number (integer) """ - self._ports[port_id] = None + self._ports[port_number] = None - def get_nio(self, port_id): + def get_nio(self, port_number): """ Returns the NIO assigned to a port. - :params port_id: port ID (integer) + :params port_number: port number (integer) :returns: NIO instance """ - return self._ports[port_id] + return self._ports[port_number] @property def ports(self): diff --git a/gns3server/modules/virtualbox/virtualbox_vm.py b/gns3server/modules/virtualbox/virtualbox_vm.py index b462880d..047dea45 100644 --- a/gns3server/modules/virtualbox/virtualbox_vm.py +++ b/gns3server/modules/virtualbox/virtualbox_vm.py @@ -152,7 +152,8 @@ class VirtualBoxVM(BaseVM): else: yield from self._create_linked_clone() - yield from self.set_adapters(self._adapters) + if self._adapters: + yield from self.set_adapters(self._adapters) @asyncio.coroutine def start(self): diff --git a/gns3server/modules/vpcs/vpcs_vm.py b/gns3server/modules/vpcs/vpcs_vm.py index a3852e88..e5f5ed28 100644 --- a/gns3server/modules/vpcs/vpcs_vm.py +++ b/gns3server/modules/vpcs/vpcs_vm.py @@ -317,47 +317,47 @@ class VPCSVM(BaseVM): return True return False - def port_add_nio_binding(self, port_id, nio): + def port_add_nio_binding(self, port_number, nio): """ Adds a port NIO binding. - :param port_id: port ID + :param port_number: port number :param nio: NIO instance to add to the slot/port """ - if not self._ethernet_adapter.port_exists(port_id): - raise VPCSError("Port {port_id} doesn't exist in adapter {adapter}".format(adapter=self._ethernet_adapter, - port_id=port_id)) + if not self._ethernet_adapter.port_exists(port_number): + raise VPCSError("Port {port_number} doesn't exist in adapter {adapter}".format(adapter=self._ethernet_adapter, + port_number=port_number)) - self._ethernet_adapter.add_nio(port_id, nio) - log.info("VPCS {name} {uuid}]: {nio} added to port {port_id}".format(name=self._name, - uuid=self.uuid, - nio=nio, - port_id=port_id)) + self._ethernet_adapter.add_nio(port_number, nio) + log.info("VPCS {name} {uuid}]: {nio} added to port {port_number}".format(name=self._name, + uuid=self.uuid, + nio=nio, + port_number=port_number)) return nio - def port_remove_nio_binding(self, port_id): + def port_remove_nio_binding(self, port_number): """ Removes a port NIO binding. - :param port_id: port ID + :param port_number: port number :returns: NIO instance """ - if not self._ethernet_adapter.port_exists(port_id): - raise VPCSError("Port {port_id} doesn't exist in adapter {adapter}".format(adapter=self._ethernet_adapter, - port_id=port_id)) + if not self._ethernet_adapter.port_exists(port_number): + raise VPCSError("Port {port_number} doesn't exist in adapter {adapter}".format(adapter=self._ethernet_adapter, + port_number=port_number)) - nio = self._ethernet_adapter.get_nio(port_id) + nio = self._ethernet_adapter.get_nio(port_number) if str(nio) == "NIO UDP": self.manager.port_manager.release_udp_port(nio.lport) - self._ethernet_adapter.remove_nio(port_id) + self._ethernet_adapter.remove_nio(port_number) - log.info("VPCS {name} [{uuid}]: {nio} removed from port {port_id}".format(name=self._name, - uuid=self.uuid, - nio=nio, - port_id=port_id)) + log.info("VPCS {name} [{uuid}]: {nio} removed from port {port_number}".format(name=self._name, + uuid=self.uuid, + nio=nio, + port_number=port_number)) return nio def _build_command(self): diff --git a/tests/api/test_virtualbox.py b/tests/api/test_virtualbox.py index d056bec9..9f90aea4 100644 --- a/tests/api/test_virtualbox.py +++ b/tests/api/test_virtualbox.py @@ -94,7 +94,7 @@ def test_vbox_nio_create_udp(server, vm): "rhost": "127.0.0.1"}, example=True) assert response.status == 201 - assert response.route == "/virtualbox/{uuid}/ports/{port_id:\d+}/nio" + assert response.route == "/virtualbox/{uuid}/ports/{adapter_id:\d+}/nio" assert response.json["type"] == "nio_udp" @@ -105,7 +105,7 @@ def test_vbox_delete_nio(server, vm): "rhost": "127.0.0.1"}) response = server.delete("/virtualbox/{}/ports/0/nio".format(vm["uuid"]), example=True) assert response.status == 204 - assert response.route == "/virtualbox/{uuid}/ports/{port_id:\d+}/nio" + assert response.route == "/virtualbox/{uuid}/ports/{adapter_id:\d+}/nio" def test_vpcs_update(server, vm, free_console_port): diff --git a/tests/api/test_vpcs.py b/tests/api/test_vpcs.py index d07dcc50..db318494 100644 --- a/tests/api/test_vpcs.py +++ b/tests/api/test_vpcs.py @@ -82,7 +82,7 @@ def test_vpcs_nio_create_udp(server, vm): "rhost": "127.0.0.1"}, example=True) assert response.status == 201 - assert response.route == "/vpcs/{uuid}/ports/{port_id:\d+}/nio" + assert response.route == "/vpcs/{uuid}/ports/{port_number:\d+}/nio" assert response.json["type"] == "nio_udp" @@ -91,7 +91,7 @@ def test_vpcs_nio_create_tap(server, vm): response = server.post("/vpcs/{}/ports/0/nio".format(vm["uuid"]), {"type": "nio_tap", "tap_device": "test"}) assert response.status == 201 - assert response.route == "/vpcs/{uuid}/ports/{port_id:\d+}/nio" + assert response.route == "/vpcs/{uuid}/ports/{port_number:\d+}/nio" assert response.json["type"] == "nio_tap" @@ -102,7 +102,7 @@ def test_vpcs_delete_nio(server, vm): "rhost": "127.0.0.1"}) response = server.delete("/vpcs/{}/ports/0/nio".format(vm["uuid"]), example=True) assert response.status == 204 - assert response.route == "/vpcs/{uuid}/ports/{port_id:\d+}/nio" + assert response.route == "/vpcs/{uuid}/ports/{port_number:\d+}/nio" def test_vpcs_start(server, vm): diff --git a/tests/modules/virtualbox/test_virtualbox_vm.py b/tests/modules/virtualbox/test_virtualbox_vm.py index f4c889bf..049be0d8 100644 --- a/tests/modules/virtualbox/test_virtualbox_vm.py +++ b/tests/modules/virtualbox/test_virtualbox_vm.py @@ -41,7 +41,6 @@ def test_vm(project, manager): assert vm.name == "test" assert vm.uuid == "00010203-0405-0607-0809-0a0b0c0d0e0f" assert vm.vmname == "test" - assert vm.linked_clone is False def test_vm_valid_virtualbox_api_version(loop, project, manager):