diff --git a/gns3server/handlers/api/iou_handler.py b/gns3server/handlers/api/iou_handler.py index 5606cd8b..c828eef1 100644 --- a/gns3server/handlers/api/iou_handler.py +++ b/gns3server/handlers/api/iou_handler.py @@ -232,7 +232,7 @@ class IOUHandler: if nio_type not in ("nio_udp", "nio_tap", "nio_generic_ethernet"): raise HTTPConflict(text="NIO of type {} is not supported".format(nio_type)) nio = iou_manager.create_nio(vm.iouyap_path, request.json) - vm.adapter_add_nio_binding(int(request.match_info["adapter_number"]), int(request.match_info["port_number"]), nio) + yield from vm.adapter_add_nio_binding(int(request.match_info["adapter_number"]), int(request.match_info["port_number"]), nio) response.set_status(201) response.json(nio) @@ -255,7 +255,7 @@ class IOUHandler: iou_manager = IOU.instance() vm = iou_manager.get_vm(request.match_info["vm_id"], project_id=request.match_info["project_id"]) - vm.adapter_remove_nio_binding(int(request.match_info["adapter_number"]), int(request.match_info["port_number"])) + yield from vm.adapter_remove_nio_binding(int(request.match_info["adapter_number"]), int(request.match_info["port_number"])) response.set_status(204) @Route.post( diff --git a/gns3server/modules/iou/iou_vm.py b/gns3server/modules/iou/iou_vm.py index 1fe6ace1..d6cfefa6 100644 --- a/gns3server/modules/iou/iou_vm.py +++ b/gns3server/modules/iou/iou_vm.py @@ -912,6 +912,7 @@ class IOUVM(BaseVM): self._adapters = self._ethernet_adapters + self._serial_adapters + @asyncio.coroutine def adapter_add_nio_binding(self, adapter_number, port_number, nio): """ Adds a adapter NIO binding. @@ -944,6 +945,7 @@ class IOUVM(BaseVM): except ProcessLookupError: log.error("Could not update iouyap configuration: process (PID={}) not found".format(self._iouyap_process.pid)) + @asyncio.coroutine def adapter_remove_nio_binding(self, adapter_number, port_number): """ Removes an adapter NIO binding. diff --git a/tests/modules/iou/test_iou_vm.py b/tests/modules/iou/test_iou_vm.py index 6a4503ea..4d0e48ec 100644 --- a/tests/modules/iou/test_iou_vm.py +++ b/tests/modules/iou/test_iou_vm.py @@ -341,7 +341,7 @@ def test_start_capture(vm, tmpdir, manager, free_console_port, loop): output_file = str(tmpdir / "test.pcap") nio = manager.create_nio(vm.iouyap_path, {"type": "nio_udp", "lport": free_console_port, "rport": free_console_port, "rhost": "127.0.0.1"}) - vm.adapter_add_nio_binding(0, 0, nio) + loop.run_until_complete(asyncio.async(vm.adapter_add_nio_binding(0, 0, nio))) loop.run_until_complete(asyncio.async(vm.start_capture(0, 0, output_file))) assert vm._adapters[0].get_nio(0).capturing @@ -350,7 +350,7 @@ def test_stop_capture(vm, tmpdir, manager, free_console_port, loop): output_file = str(tmpdir / "test.pcap") nio = manager.create_nio(vm.iouyap_path, {"type": "nio_udp", "lport": free_console_port, "rport": free_console_port, "rhost": "127.0.0.1"}) - vm.adapter_add_nio_binding(0, 0, nio) + loop.run_until_complete(asyncio.async(vm.adapter_add_nio_binding(0, 0, nio))) loop.run_until_complete(vm.start_capture(0, 0, output_file)) assert vm._adapters[0].get_nio(0).capturing loop.run_until_complete(asyncio.async(vm.stop_capture(0, 0)))