[virt-tools-list] [PATCH v2 3/3] A few spice tweaks to simplify setup
Marc-André Lureau
marcandre.lureau at redhat.com
Thu Mar 17 17:06:35 UTC 2011
If Spice is enabled:
- use QXL video device
- add a spicevmc char device for the agent channel
Updated since v1:
- added some blurb in virt-install.pod.in that --graphics spice will
add --video qxl and --channel spicevmc
- fixed the test_cli after the virtio port name got a default value
- check that spicevmc is supported before using it
---
man/en/virt-install.pod.in | 4 ++++
tests/cli-test-xml/compare/kvm-machine.xml | 5 ++++-
tests/xmlconfig-xml/boot-many-devices.xml | 2 +-
virtinst/Guest.py | 26 +++++++++++++++++++++++++-
4 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/man/en/virt-install.pod.in b/man/en/virt-install.pod.in
index 0088727..14b86bc 100644
--- a/man/en/virt-install.pod.in
+++ b/man/en/virt-install.pod.in
@@ -592,6 +592,10 @@ Export the guest's console using the Spice protocol. Spice allows advanced
features like audio and USB device streaming, as well as improved graphical
performance.
+Using spice graphic type will work as if those arguments were given:
+
+ --video qxl --channel spicevmc
+
none
No graphical console will be allocated for the guest. Fully virtualized guests
diff --git a/tests/cli-test-xml/compare/kvm-machine.xml b/tests/cli-test-xml/compare/kvm-machine.xml
index 12196d7..9edadcc 100644
--- a/tests/cli-test-xml/compare/kvm-machine.xml
+++ b/tests/cli-test-xml/compare/kvm-machine.xml
@@ -25,8 +25,11 @@
<input type='tablet' bus='usb'/>
<graphics type='spice' port='-1' tlsPort='-1' autoport='yes'/>
<console type='pty'/>
+ <channel type='spicevmc'>
+ <target type='virtio' name='com.redhat.spice.0'/>
+ </channel>
<video>
- <model type='cirrus'/>
+ <model type='qxl'/>
</video>
</devices>
</domain>
diff --git a/tests/xmlconfig-xml/boot-many-devices.xml b/tests/xmlconfig-xml/boot-many-devices.xml
index 47479c6..006e0cb 100644
--- a/tests/xmlconfig-xml/boot-many-devices.xml
+++ b/tests/xmlconfig-xml/boot-many-devices.xml
@@ -69,7 +69,7 @@
<model type='cirrus' vram='10240' heads='3'/>
</video>
<video>
- <model type='cirrus'/>
+ <model type='qxl'/>
</video>
<video>
<model type='qxl'/>
diff --git a/virtinst/Guest.py b/virtinst/Guest.py
index de251e1..2d48a1d 100644
--- a/virtinst/Guest.py
+++ b/virtinst/Guest.py
@@ -1412,6 +1412,8 @@ class Guest(XMLBuilderDomain.XMLBuilderDomain):
soundtype = VirtualDevice.VIRTUAL_DEV_AUDIO
videotype = VirtualDevice.VIRTUAL_DEV_VIDEO
inputtype = VirtualDevice.VIRTUAL_DEV_INPUT
+ gfxtype = VirtualDevice.VIRTUAL_DEV_GRAPHICS
+ channeltype = VirtualDevice.VIRTUAL_DEV_CHANNEL
# Set default input values
input_type = self._lookup_device_param(inputtype, "type")
@@ -1442,11 +1444,33 @@ class Guest(XMLBuilderDomain.XMLBuilderDomain):
sound.model = sound_model
# Set video device model
- video_model = self._lookup_device_param(videotype, "model_type")
+ # QXL device (only if we use spice) - safe even if guest is VGA only
+ def has_spice():
+ for gfx in devlist_func(gfxtype):
+ if gfx.type == gfx.TYPE_SPICE:
+ return True
+ if has_spice():
+ video_model = "qxl"
+ else:
+ video_model = self._lookup_device_param(videotype, "model_type")
for video in devlist_func(videotype):
if video.model_type == video.MODEL_DEFAULT:
video.model_type = video_model
+ # Spice agent channel (only if we use spice)
+ def has_spice_agent():
+ for chn in devlist_func(channeltype):
+ if chn.char_type == chn.CHAR_SPICEVMC:
+ return True
+
+ if has_spice() and \
+ support.check_conn_support(self.conn, support.SUPPORT_CONN_HV_CHAR_SPICEVMC) and \
+ not has_spice_agent():
+ agentdev = VirtualCharDevice.get_dev_instance(self.conn,
+ VirtualCharDevice.DEV_CHANNEL,
+ VirtualCharDevice.CHAR_SPICEVMC)
+ self.add_device(agentdev)
+
# Generate UUID
if self.uuid is None:
found = False
--
1.7.4
More information about the virt-tools-list
mailing list