On 2/9/22 11:32 AM, Charles Arnold wrote:
On 2/9/22 10:32 AM, Cole Robinson wrote:
On 2/9/22 9:50 AM, Charles Arnold wrote:
Advertising graphics support doesn't necessarily mean spice support.
self.devices.graphics.supported seems to not be spice specific
but rather more generic in indicating whether graphics are supported.
For Xen, spice is not supported so fallback to the old logic.
Signed-off-by: Charles Arnold <carnold@xxxxxxxx>
diff --git a/virtinst/domcapabilities.py b/virtinst/domcapabilities.py
index 67bceaa3..ad6e3363 100644
--- a/virtinst/domcapabilities.py
+++ b/virtinst/domcapabilities.py
@@ -382,7 +382,7 @@ class DomainCapabilities(XMLBuilder):
return len(models) > 0 and bool("emulator" in backends)
def supports_graphics_spice(self):
- if not self.devices.graphics.supported:
+ if not self.devices.graphics.supported or self.conn.is_xen():
# domcaps is too old, or the driver doesn't advertise
graphics
# support. Use our pre-existing logic
if not self.conn.is_qemu() and not self.conn.is_test():
Hmm but does that mean domcapabilities for xen is reporting that spice
is available? If that's the case, seems like a domcapabilities bug in
libvirt xen driver. Or am I missing something?
Thanks,
Cole
Booted into Xen, virsh domcapabilities reports,
<domainCapabilities>
<path>/usr/bin/qemu-system-x86_64</path>
<domain>xen</domain>
<machine>xenpv</machine>
<arch>x86_64</arch>
<vcpu max='512'/>
<iothreads supported='no'/>
<os supported='yes'>
<loader supported='no'/>
</os>
<cpu>
<mode name='host-passthrough' supported='no'/>
<mode name='maximum' supported='no'/>
<mode name='host-model' supported='no'/>
<mode name='custom' supported='no'/>
</cpu>
<devices>
<disk supported='yes'>
<enum name='diskDevice'>
<value>disk</value>
<value>cdrom</value>
</enum>
<enum name='bus'>
<value>ide</value>
<value>scsi</value>
<value>xen</value>
</enum>
<enum name='model'/>
</disk>
<graphics supported='yes'>
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>spice</value>
</enum>
</graphics>
<video supported='yes'>
<enum name='modelType'>
<value>vga</value>
<value>cirrus</value>
<value>xen</value>
</enum>
</video>
<hostdev supported='yes'>
<enum name='mode'>
<value>subsystem</value>
</enum>
<enum name='startupPolicy'>
<value>default</value>
<value>mandatory</value>
<value>requisite</value>
<value>optional</value>
</enum>
<enum name='subsysType'>
<value>usb</value>
<value>pci</value>
</enum>
<enum name='capsType'/>
<enum name='pciBackend'>
<value>xen</value>
</enum>
</hostdev>
</devices>
<features>
<gic supported='no'/>
<vmcoreinfo supported='no'/>
<genid supported='no'/>
<sev supported='no'/>
</features>
</domainCapabilities>
The more precise error I'm trying to fix is while attempting to install
a Xen HVM guest it reports,
details=Traceback (most recent call last):
File "./virtManager/asyncjob.py", line 72, in cb_wrapper
callback(asyncjob, *args, **kwargs)
File "./virtManager/createvm.py", line 2008, in _do_async_install
installer.start_install(guest, meter=meter)
File "./virtinst/install/installer.py", line 704, in start_install
doboot, transient)
File "./virtinst/install/installer.py", line 649, in _create_guest
domain = self.conn.createXML(install_xml or final_xml, 0)
File "/usr/lib64/python3.6/site-packages/libvirt.py", line 4393, in
createXML
raise libvirtError('virDomainCreateXML() failed')
libvirt.libvirtError: unsupported configuration: cannot add redirected
USB device: USB is disabled for this domain
So in the latest code the VM is marked as supporting spice and later
wants to add a DeviceRedirdev. The 3.2.0 code always just failed for
spice if 'is_qemu()' was false.
- Charles