From c91a001729732cb13b8764c72d7daa0a9b40838e Mon Sep 17 00:00:00 2001 From: ziajka Date: Fri, 16 Jun 2017 10:03:33 +0200 Subject: [PATCH 1/3] QEMU VNC options tests --- tests/compute/qemu/test_qemu_vm.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/compute/qemu/test_qemu_vm.py b/tests/compute/qemu/test_qemu_vm.py index 71ba1f71b..195567171 100644 --- a/tests/compute/qemu/test_qemu_vm.py +++ b/tests/compute/qemu/test_qemu_vm.py @@ -359,6 +359,13 @@ def test_bios_option(vm, tmpdir, loop, fake_qemu_img_binary): assert ' '.join(['-bios', str(tmpdir / "test.img")]) in ' '.join(options) +def test_vnc_option(vm, tmpdir, loop, fake_qemu_img_binary): + vm._console_type = 'vnc' + vm._console = 5905 + options = loop.run_until_complete(asyncio.async(vm._build_command())) + assert '-vnc 127.0.0.1:5' in ' '.join(options) + + def test_disk_options_multiple_disk(vm, tmpdir, loop, fake_qemu_img_binary): vm._hda_disk_image = str(tmpdir / "test0.qcow2") From 88c2353e2e9b0e06fe0c8ddc867b593a42d132b6 Mon Sep 17 00:00:00 2001 From: ziajka Date: Fri, 16 Jun 2017 10:17:26 +0200 Subject: [PATCH 2/3] QEMU - SPICE support at build options and schemas --- gns3server/compute/qemu/qemu_vm.py | 10 ++++++++++ gns3server/schemas/qemu.py | 6 +++--- tests/compute/qemu/test_qemu_vm.py | 7 +++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/gns3server/compute/qemu/qemu_vm.py b/gns3server/compute/qemu/qemu_vm.py index 21e761dfa..b703943ce 100644 --- a/gns3server/compute/qemu/qemu_vm.py +++ b/gns3server/compute/qemu/qemu_vm.py @@ -1304,6 +1304,14 @@ class QemuVM(BaseNode): else: return [] + def _spice_options(self): + + if self._console: + return ["-spice", + "addr={},port={},disable-ticketing".format(self._manager.port_manager.console_host, self._console)] + else: + return [] + def _monitor_options(self): if self._monitor: @@ -1563,6 +1571,8 @@ class QemuVM(BaseNode): command.extend(self._serial_options()) elif self._console_type == "vnc": command.extend(self._vnc_options()) + elif self._console_type == "spice": + command.extend(self._spice_options()) else: raise QemuError("Console type {} is unknown".format(self._console_type)) command.extend(self._monitor_options()) diff --git a/gns3server/schemas/qemu.py b/gns3server/schemas/qemu.py index bdf3e55c7..f821f2c90 100644 --- a/gns3server/schemas/qemu.py +++ b/gns3server/schemas/qemu.py @@ -63,7 +63,7 @@ QEMU_CREATE_SCHEMA = { }, "console_type": { "description": "Console type", - "enum": ["telnet", "vnc"] + "enum": ["telnet", "vnc", "spice"] }, "hda_disk_image": { "description": "QEMU hda disk image path", @@ -244,7 +244,7 @@ QEMU_UPDATE_SCHEMA = { }, "console_type": { "description": "Console type", - "enum": ["telnet", "vnc"] + "enum": ["telnet", "vnc", "spice"] }, "linked_clone": { "description": "Whether the VM is a linked clone or not", @@ -541,7 +541,7 @@ QEMU_OBJECT_SCHEMA = { }, "console_type": { "description": "Console type", - "enum": ["telnet", "vnc"] + "enum": ["telnet", "vnc", "spice"] }, "initrd": { "description": "QEMU initrd path", diff --git a/tests/compute/qemu/test_qemu_vm.py b/tests/compute/qemu/test_qemu_vm.py index 195567171..d83b21211 100644 --- a/tests/compute/qemu/test_qemu_vm.py +++ b/tests/compute/qemu/test_qemu_vm.py @@ -366,6 +366,13 @@ def test_vnc_option(vm, tmpdir, loop, fake_qemu_img_binary): assert '-vnc 127.0.0.1:5' in ' '.join(options) +def test_spice_option(vm, tmpdir, loop, fake_qemu_img_binary): + vm._console_type = 'spice' + vm._console = 5905 + options = loop.run_until_complete(asyncio.async(vm._build_command())) + assert '-spice addr=127.0.0.1,port=5905,disable-ticketing' in ' '.join(options) + + def test_disk_options_multiple_disk(vm, tmpdir, loop, fake_qemu_img_binary): vm._hda_disk_image = str(tmpdir / "test0.qcow2") From 61fda936113b8f19dffb34e94150cdfe1f1b084d Mon Sep 17 00:00:00 2001 From: ziajka Date: Fri, 16 Jun 2017 14:41:05 +0200 Subject: [PATCH 3/3] SPICE console_type for nodes --- gns3server/schemas/node.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gns3server/schemas/node.py b/gns3server/schemas/node.py index 6e8f4e2ae..28add3ef8 100644 --- a/gns3server/schemas/node.py +++ b/gns3server/schemas/node.py @@ -144,7 +144,7 @@ NODE_OBJECT_SCHEMA = { }, "console_type": { "description": "Console type", - "enum": ["vnc", "telnet", "http", None] + "enum": ["vnc", "telnet", "http", "spice", None] }, "properties": { "description": "Properties specific to an emulator",