[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[et-mgmt-tools] [PATCH] virt-manager: Support video devices in 'Add Hardware'
- From: Cole Robinson <crobinso redhat com>
- To: Fedora/Linux Management Tools <et-mgmt-tools redhat com>
- Subject: [et-mgmt-tools] [PATCH] virt-manager: Support video devices in 'Add Hardware'
- Date: Thu, 09 Jul 2009 15:27:10 -0400
The attached patch implements attaching video devices via the 'Add Hardware'
wizard in virt-manager. An example screenshot:
http://fedorapeople.org/~crobinso/virt-manager/vmm-add-video.png
Only the device 'model' is exposed, since that is all that is really relevant
for qemu and xen ATM. As a result the wizard is pretty straightforward. I
snipped the actual UI diff from the patch since it is pretty large.
Questions or comments appreciated.
- Cole
# HG changeset patch
# User Cole Robinson <crobinso redhat com>
# Date 1247164924 14400
# Node ID 9a4d10c8cbb095fde85d19126fdea9bbe3417a4f
# Parent 6ba8a10d6f8f446464f2de4b566813c35c443c10
Support video devices in 'Add Hardware' wizard.
Pretty sparse at the moment: only allows setting video device model (which
is all that's really relevant for qemu/xen ATM).
diff -r 6ba8a10d6f8f -r 9a4d10c8cbb0 src/virtManager/addhardware.py
--- a/src/virtManager/addhardware.py Thu Jul 09 14:41:54 2009 -0400
+++ b/src/virtManager/addhardware.py Thu Jul 09 14:42:04 2009 -0400
@@ -28,7 +28,7 @@
import gtk.glade
import virtinst
-from virtinst import VirtualCharDevice, VirtualDevice
+from virtinst import VirtualCharDevice, VirtualDevice, VirtualVideoDevice
import virtManager.util as vmmutil
from virtManager.asyncjob import vmmAsyncJob
@@ -49,7 +49,8 @@
PAGE_SOUND = 5
PAGE_HOSTDEV = 6
PAGE_CHAR = 7
-PAGE_SUMMARY = 8
+PAGE_VIDEO = 8
+PAGE_SUMMARY = 9
char_widget_mappings = {
"source_path" : "char-path",
@@ -240,6 +241,18 @@
host_dev.add_attribute(text, 'text', 0)
host_dev_model.set_sort_column_id(0, gtk.SORT_ASCENDING)
+ # Video device
+ video_dev = self.window.get_widget("video-model")
+ video_dev_model = gtk.ListStore(str)
+ video_dev.set_model(video_dev_model)
+ text = gtk.CellRendererText()
+ video_dev.pack_start(text, True)
+ video_dev.add_attribute(text, 'text', 0)
+ video_dev_model.set_sort_column_id(0, gtk.SORT_ASCENDING)
+ for m in VirtualVideoDevice(self.vm.get_connection().vmm).model_types:
+ video_dev_model.append([m])
+ if len(video_dev_model) > 0:
+ video_dev.set_active(0)
char_devtype = self.window.get_widget("char-device-type")
# Type name, desc
@@ -394,6 +407,8 @@
if self.vm.get_connection().is_nodedev_capable():
model.append(["Physical Host Device", None, PAGE_HOSTDEV])
+ model.append(["Video", gtk.STOCK_SELECT_COLOR, PAGE_VIDEO])
+
self.window.get_widget("hardware-type").set_active(0)
def forward(self, ignore=None):
@@ -553,6 +568,10 @@
devbox = self.window.get_widget("host-device")
return devbox.get_model()[devbox.get_active()]
+ def get_config_video_model(self):
+ modbox = self.window.get_widget("video-model")
+ return modbox.get_model()[modbox.get_active()][0]
+
def page_changed(self, notebook, page, page_number):
if page_number == PAGE_CHAR:
devtype = self.window.get_widget("char-device-type")
@@ -698,6 +717,12 @@
]
title = _("Physical Host Device")
+ elif hwpage == PAGE_VIDEO:
+ info_list = [
+ (_("Model:"), self._dev.model_type),
+ ]
+ title = _("Video")
+
set_table(title, info_list)
@@ -722,7 +747,8 @@
PAGE_GRAPHICS: self.add_graphics,
PAGE_SOUND: self.add_sound,
PAGE_HOSTDEV: self.add_hostdev,
- PAGE_CHAR: self.add_device}
+ PAGE_CHAR: self.add_device,
+ PAGE_VIDEO: self.add_device}
try:
func = func_dict[hw]
@@ -1190,6 +1216,17 @@
return self.err.val_err(_("%s device parameter error.") %
chartype.capitalize(), str(e))
+ elif page_num == PAGE_VIDEO:
+ conn = self.vm.get_connection().vmm
+ model = self.get_config_video_model()
+
+ try:
+ self._dev = VirtualVideoDevice(conn=conn)
+ self._dev.model_type = model
+ except Exception, e:
+ return self.err.val_err(_("Video device parameter error.") %
+ str(e))
+
return True
def populate_network_model(self, model):
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]