diff --git a/gns3server/handlers/iou_handler.py b/gns3server/handlers/iou_handler.py index 70ccc6b6..a606efff 100644 --- a/gns3server/handlers/iou_handler.py +++ b/gns3server/handlers/iou_handler.py @@ -46,10 +46,10 @@ class IOUHandler: iou = IOU.instance() vm = yield from iou.create_vm(request.json["name"], - request.match_info["project_id"], - request.json.get("vm_id"), - console=request.json.get("console"), - ) + request.match_info["project_id"], + request.json.get("vm_id"), + console=request.json.get("console"), + ) vm.iou_path = request.json.get("iou_path", vm.iou_path) vm.iourc_path = request.json.get("iourc_path", vm.iourc_path) response.set_status(201) diff --git a/gns3server/modules/iou/iou_vm.py b/gns3server/modules/iou/iou_vm.py index 9651e210..d173f973 100644 --- a/gns3server/modules/iou/iou_vm.py +++ b/gns3server/modules/iou/iou_vm.py @@ -27,12 +27,15 @@ import signal import re import asyncio import shutil +import argparse +import threading from pkg_resources import parse_version from .iou_error import IOUError from ..adapters.ethernet_adapter import EthernetAdapter from ..adapters.serial_adapter import SerialAdapter from ..base_vm import BaseVM +from .ioucon import start_ioucon import logging @@ -50,9 +53,12 @@ class IOUVM(BaseVM): :param project: Project instance :param manager: parent VM Manager :param console: TCP console port + :params console_host: TCP console host IP """ - def __init__(self, name, vm_id, project, manager, console=None): + def __init__(self, name, vm_id, project, manager, + console=None, + console_host="0.0.0.0"): super().__init__(name, vm_id, project, manager) @@ -65,6 +71,7 @@ class IOUVM(BaseVM): self._iou_path = None self._iourc_path = None self._ioucon_thread = None + self._console_host = console_host # IOU settings self._ethernet_adapters = [EthernetAdapter(), EthernetAdapter()] # one adapter = 4 interfaces @@ -292,7 +299,7 @@ class IOUVM(BaseVM): raise IOUError("could not start IOU {}: {}\n{}".format(self._iou_path, e, iou_stdout)) # start console support - # self._start_ioucon() + self._start_ioucon() # connections support # self._start_iouyap() diff --git a/gns3server/old_modules/iou/ioucon.py b/gns3server/modules/iou/ioucon.py similarity index 99% rename from gns3server/old_modules/iou/ioucon.py rename to gns3server/modules/iou/ioucon.py index 9a0e980e..6dbd782d 100644 --- a/gns3server/old_modules/iou/ioucon.py +++ b/gns3server/modules/iou/ioucon.py @@ -55,7 +55,7 @@ EXIT_ABORT = 2 # Mostly from: # https://code.google.com/p/miniboa/source/browse/trunk/miniboa/telnet.py -#--[ Telnet Commands ]--------------------------------------------------------- +# --[ Telnet Commands ]--------------------------------------------------------- SE = 240 # End of sub-negotiation parameters NOP = 241 # No operation DATMK = 242 # Data stream portion of a sync. @@ -74,7 +74,7 @@ DONT = 254 # Don't = Demand or confirm option halt IAC = 255 # Interpret as Command SEND = 1 # Sub-process negotiation SEND command IS = 0 # Sub-process negotiation IS command -#--[ Telnet Options ]---------------------------------------------------------- +# --[ Telnet Options ]---------------------------------------------------------- BINARY = 0 # Transmit Binary ECHO = 1 # Echo characters back to sender RECON = 2 # Reconnection diff --git a/tests/api/test_iou.py b/tests/api/test_iou.py index 5dd3268c..2e0a6fb7 100644 --- a/tests/api/test_iou.py +++ b/tests/api/test_iou.py @@ -32,6 +32,7 @@ def fake_iou_bin(tmpdir): os.chmod(path, stat.S_IREAD | stat.S_IEXEC) return path + @pytest.fixture def base_params(tmpdir, fake_iou_bin): """Return standard parameters""" @@ -91,7 +92,7 @@ def test_iou_delete(server, vm): def test_iou_update(server, vm, tmpdir, free_console_port): response = server.put("/projects/{project_id}/iou/vms/{vm_id}".format(project_id=vm["project_id"], vm_id=vm["vm_id"]), {"name": "test", - "console": free_console_port}) + "console": free_console_port}) assert response.status == 200 assert response.json["name"] == "test" assert response.json["console"] == free_console_port