[virt-tools-list] [PATCH 4/4] details: propose to add or remove Spice agent when switching

Marc-André Lureau marcandre.lureau at redhat.com
Mon Apr 4 23:35:34 UTC 2011


---
 src/virtManager/details.py |   13 ++++++++++++-
 src/virtManager/domain.py  |   14 +++++++++++++-
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/src/virtManager/details.py b/src/virtManager/details.py
index 8e6e50e..2a62ba9 100644
--- a/src/virtManager/details.py
+++ b/src/virtManager/details.py
@@ -1855,12 +1855,23 @@ class vmmDetails(vmmGObjectUI):
         passwd = self.window.get_widget("gfx-password").get_text() or None
         keymap = self.get_combo_label_value("gfx-keymap")
 
+        dialog = gtk.MessageDialog(parent = self.window.get_widget("vmm-details"),
+                                   type = gtk.MESSAGE_QUESTION,
+                                   buttons = gtk.BUTTONS_YES_NO,
+                                   message_format = \
+                                       _("You are switching graphics type to %s, " \
+                                         "would you like to %s Spice agent channels?") %
+                                         (gtype, gtype == "vnc" and "remove" or "add"))
+        result = dialog.run()
+        dialog.hide()
+        spicevmc = result == gtk.RESPONSE_YES
+
         return self._change_config_helper([self.vm.define_graphics_password,
                                            self.vm.define_graphics_keymap,
                                            self.vm.define_graphics_type],
                                           [(dev_id_info, passwd),
                                            (dev_id_info, keymap),
-                                           (dev_id_info, gtype)],
+                                           (dev_id_info, gtype, spicevmc)],
                                           [self.vm.hotplug_graphics_password],
                                           [(dev_id_info, passwd)])
 
diff --git a/src/virtManager/domain.py b/src/virtManager/domain.py
index 7fc66ed..a4d2f5c 100644
--- a/src/virtManager/domain.py
+++ b/src/virtManager/domain.py
@@ -26,6 +26,7 @@ import threading
 import gobject
 
 import virtinst
+from virtinst.VirtualCharDevice import VirtualCharSpicevmcDevice
 from virtManager import util
 import virtinst.support as support
 
@@ -450,9 +451,20 @@ class vmmDomainBase(vmmLibvirtObject):
         def change(editdev):
             editdev.keymap = newval
         return self._redefine_device(change, devobj)
-    def define_graphics_type(self, devobj, newval):
+    def define_graphics_type(self, devobj, newval, spicevmc):
         def change(editdev):
             editdev.type = newval
+            if spicevmc:
+                guest = self._get_guest_to_define()
+                if newval == "spice":
+                    guest.add_device(VirtualCharSpicevmcDevice(guest.conn))
+                else:
+                    channels = guest.get_devices("channel")
+                    channels = filter(lambda x: x.char_type ==
+                                      virtinst.VirtualCharDevice.CHAR_SPICEVMC, channels)
+                    for dev in channels:
+                        guest.remove_device(dev)
+
         return self._redefine_device(change, devobj)
 
     def define_sound_model(self, devobj, newmodel):
-- 
1.7.4




More information about the virt-tools-list mailing list