Bug 664190

Summary: Wrong "addr" Spice parameter in libvirt 0.8.6
Product: [Community] Virtualization Tools Reporter: Amador Pahim <amador>
Component: libvirtAssignee: Daniel Veillard <veillard>
Status: CLOSED NOTABUG QA Contact:
Severity: medium Docs Contact:
Priority: low    
Version: unspecifiedCC: belegdol, berrange, clober, crobinso, nalin, xen-maint
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-03-01 11:19:35 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
patch disabling addr
none
Patch that actually works
none
final patch version none

Description Amador Pahim 2010-12-19 01:05:51 UTC
Description of problem:
Running libvirt 0.8.6, spice parameters does not work

Version-Release number of selected component:
0.8.6

Steps to Reproduce:
Change VM XML file to this (instead VNC):
<graphics type='spice' port='5903' />

Try to start VM with:
# virsh start Ubuntu

Actual results:
error: Failed to start domain Ubuntu
error: internal error Process exited while reading console log output: qemu-kvm: -spice port=5903,addr=127.0.0.1,disable-ticketing: Invalid parameter 'addr'
parse error: port=5903,addr=127.0.0.1,disable-ticketing

Expected results:
Domain Ubuntu started

Additional info:
To fix that, I had to edit the "src/qemu/qemu_command.c", in libvirt source, commenting this lines:

/*
 *       if (def->graphics[0]->data.spice.listenAddr)
 *          virBufferVSprintf(&opt, ",addr=%s", def->graphics[0] >data.spice.listenAddr);
 *       else if (driver->spiceListen)
 *          virBufferVSprintf(&opt, ",addr=%s", driver->spiceListen);
 */

Comment 1 Julian Sikorski 2011-01-30 23:22:17 UTC
Created attachment 476095 [details]
patch disabling addr

I tried patching the rawhide srpm with the attached patch, but it fails to build on f14 mock giving errors like:
/usr/lib/gcc/x86_64-redhat-linux/4.5.1/include/stdarg.h:40:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'typedef'

Comment 2 Julian Sikorski 2011-01-30 23:29:05 UTC
Created attachment 476096 [details]
Patch that actually works

Erm, after posting this I realised where I screwed up. Feel free to ignore me, it's late.

Comment 3 Julian Sikorski 2011-01-30 23:38:17 UTC
Well, I spoke too soon. The qemuxml2argvtest which are a part of rpm build process fails.

Comment 4 Julian Sikorski 2011-01-31 00:11:05 UTC
Created attachment 476100 [details]
final patch version

The final version also disables the failing test so that the SRPM can be rebuilt.

Comment 5 Julian Sikorski 2011-03-01 07:30:03 UTC
$ rpm -q spice-client libvirt
spice-client-0.7.2-1.fc14.x86_64
libvirt-0.8.8-2.fc14.x86_64

With these packages everything seems to work. Looking at the logs it seems spice accepts addr parameter now.

Comment 6 Daniel Berrangé 2011-03-01 11:19:35 UTC
The problem here is that in the Fedora 14 version of QEMU, the SPICE support is done via a set of non-upstream patches. These patches did not include the 'addr' element. libvirt is designed to work with the upstream QEMU codebase. I have verified that it works with the Fedora 15 version fo QEMU.