[virt-tools-list] [virt-manager PATCH v2 1/3] addhardware: move _change_config_helper from details

Chen Hanxiao chenhanxiao at cn.fujitsu.com
Tue Jun 10 08:03:22 UTC 2014


rename it as change_config_helper.
It will be used in the later patch.

Acked-by: Giuseppe Scrivano <gscrivan at redhat.com>
Signed-off-by: Chen Hanxiao <chenhanxiao at cn.fujitsu.com>
---
 virtManager/addhardware.py |  55 ++++++++++++++++++++++++
 virtManager/details.py     | 105 ++++++++++++++-------------------------------
 2 files changed, 88 insertions(+), 72 deletions(-)

diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
index 78235bb..224baf4 100644
--- a/virtManager/addhardware.py
+++ b/virtManager/addhardware.py
@@ -1343,6 +1343,61 @@ class vmmAddHardware(vmmGObjectUI):
     # Add device methods #
     ######################
 
+    @staticmethod
+    def change_config_helper(define_func, define_args, vm, err,
+                              devobj=None,
+                              hotplug_args=None):
+        hotplug_args = hotplug_args or {}
+
+        # Persistent config change
+        try:
+            if devobj:
+                define_func(devobj, False, **define_args)
+            else:
+                define_func(**define_args)
+            vm.redefine_cached()
+        except Exception, e:
+            err.show_err((_("Error changing VM configuration: %s") %
+                              str(e)))
+            # If we fail, make sure we flush the cache
+            vm.refresh_xml()
+            return False
+
+        # Hotplug change
+        hotplug_err = None
+        if vm.is_active():
+            try:
+                if devobj:
+                    hotplug_args["device"] = define_func(
+                        devobj, True, **define_args)
+                if hotplug_args:
+                    vm.hotplug(**hotplug_args)
+            except Exception, e:
+                logging.debug("Hotplug failed: %s", str(e))
+                hotplug_err = ((str(e), "".join(traceback.format_exc())))
+
+        if (hotplug_err or (vm.is_active() and not hotplug_args)):
+            if len(define_args) > 1:
+                msg = _("Some changes may require a guest shutdown "
+                        "to take effect.")
+            else:
+                msg = _("These changes will take effect after "
+                        "the next guest shutdown.")
+
+            dtype = (hotplug_err and
+                     Gtk.MessageType.WARNING or Gtk.MessageType.INFO)
+            hotplug_msg = ""
+            if hotplug_err:
+                hotplug_msg += (hotplug_err[0] + "\n\n" +
+                                hotplug_err[1] + "\n")
+
+            err.show_err(msg,
+                              details=hotplug_msg,
+                              buttons=Gtk.ButtonsType.OK,
+                              dialog_type=dtype)
+
+        return True
+
     def setup_device(self, asyncjob):
         logging.debug("Running setup for device=%s", self._dev)
         self._dev.setup(meter=asyncjob.get_meter())
diff --git a/virtManager/details.py b/virtManager/details.py
index 7dac216..133c12a 100644
--- a/virtManager/details.py
+++ b/virtManager/details.py
@@ -2041,7 +2041,8 @@ class vmmDetails(vmmGObjectUI):
                 idmap_list = None
             kwargs["idmap_list"] = idmap_list
 
-        return self._change_config_helper(self.vm.define_overview, kwargs,
+        return vmmAddHardware.change_config_helper(self.vm.define_overview,
+                                          kwargs, self.vm, self.err,
                                           hotplug_args=hotplug_args)
 
     def config_vcpus_apply(self):
@@ -2069,7 +2070,8 @@ class vmmDetails(vmmGObjectUI):
                 kwargs["cores"] = None
                 kwargs["threads"] = None
 
-        return self._change_config_helper(self.vm.define_cpu, kwargs,
+        return vmmAddHardware.change_config_helper(self.vm.define_cpu,
+                                          kwargs, self.vm, self.err,
                                           hotplug_args=hotplug_args)
 
     def config_memory_apply(self):
@@ -2092,7 +2094,8 @@ class vmmDetails(vmmGObjectUI):
             hotplug_args["memory"] = kwargs["memory"]
             hotplug_args["maxmem"] = kwargs["maxmem"]
 
-        return self._change_config_helper(self.vm.define_memory, kwargs,
+        return vmmAddHardware.change_config_helper(self.vm.define_memory,
+                                          kwargs, self.vm, self.err,
                                           hotplug_args=hotplug_args)
 
     def config_boot_options_apply(self):
@@ -2133,14 +2136,16 @@ class vmmDetails(vmmGObjectUI):
             if not kwargs["init"]:
                 return self.err.val_err(_("An init path must be specified"))
 
-        return self._change_config_helper(self.vm.define_boot, kwargs)
+        return vmmAddHardware.change_config_helper(self.vm.define_boot,
+                                          kwargs, self.vm, self.err)
 
     # <device> defining
     def change_storage_media(self, devobj, newpath):
         kwargs = {"path": newpath}
         hotplug_args = {"storage_path": True}
 
-        return self._change_config_helper(self.vm.define_disk, kwargs,
+        return vmmAddHardware.change_config_helper(self.vm.define_disk,
+                                          kwargs, self.vm, self.err,
                                           devobj=devobj,
                                           hotplug_args=hotplug_args)
 
@@ -2194,7 +2199,8 @@ class vmmDetails(vmmGObjectUI):
             kwargs["bus"] = bus
             kwargs["addrstr"] = addr
 
-        return self._change_config_helper(self.vm.define_disk, kwargs,
+        return vmmAddHardware.change_config_helper(self.vm.define_disk,
+                                          kwargs, self.vm, self.err,
                                           devobj=devobj)
 
     def config_sound_apply(self, devobj):
@@ -2205,7 +2211,8 @@ class vmmDetails(vmmGObjectUI):
             if model:
                 kwargs["model"] = model
 
-        return self._change_config_helper(self.vm.define_sound, kwargs,
+        return vmmAddHardware.change_config_helper(self.vm.define_sound,
+                                          kwargs, self.vm, self.err,
                                           devobj=devobj)
 
     def config_smartcard_apply(self, devobj):
@@ -2216,7 +2223,8 @@ class vmmDetails(vmmGObjectUI):
             if model:
                 kwargs["model"] = model
 
-        return self._change_config_helper(self.vm.define_smartcard, kwargs,
+        return vmmAddHardware.change_config_helper(self.vm.define_smartcard,
+                                          kwargs, self.vm, self.err,
                                           devobj=devobj)
 
     def config_network_apply(self, devobj):
@@ -2240,8 +2248,9 @@ class vmmDetails(vmmGObjectUI):
              kwargs["typeid"], kwargs["typeidversion"],
              kwargs["instanceid"]) = self.netlist.get_vport()
 
-        return self._change_config_helper(self.vm.define_network, kwargs,
-                                          devobj)
+        return vmmAddHardware.change_config_helper(self.vm.define_network,
+                                          kwargs, self.vm, self.err,
+                                          devobj=devobj)
 
     def config_graphics_apply(self, devobj):
         (gtype, port,
@@ -2262,7 +2271,8 @@ class vmmDetails(vmmGObjectUI):
         if self.edited(EDIT_GFX_TYPE):
             kwargs["gtype"] = gtype
 
-        return self._change_config_helper(self.vm.define_graphics, kwargs,
+        return vmmAddHardware.change_config_helper(self.vm.define_graphics,
+                                          kwargs, self.vm, self.err,
                                           devobj=devobj)
 
     def config_video_apply(self, devobj):
@@ -2273,7 +2283,8 @@ class vmmDetails(vmmGObjectUI):
             if model:
                 kwargs["model"] = model
 
-        return self._change_config_helper(self.vm.define_video, kwargs,
+        return vmmAddHardware.change_config_helper(self.vm.define_video,
+                                          kwargs, self.vm, self.err,
                                           devobj=devobj)
 
     def config_controller_apply(self, devobj):
@@ -2284,8 +2295,9 @@ class vmmDetails(vmmGObjectUI):
             if model:
                 kwargs["model"] = model
 
-        return self._change_config_helper(self.vm.define_controller,
-                                          kwargs, devobj=devobj)
+        return vmmAddHardware.change_config_helper(self.vm.define_controller,
+                                          kwargs, self.vm, self.err,
+                                          devobj=devobj)
 
     def config_watchdog_apply(self, devobj):
         kwargs = {}
@@ -2298,7 +2310,8 @@ class vmmDetails(vmmGObjectUI):
             kwargs["action"] = uiutil.get_combo_entry(
                 self.widget("watchdog-action"))
 
-        return self._change_config_helper(self.vm.define_watchdog, kwargs,
+        return vmmAddHardware.change_config_helper(self.vm.define_watchdog,
+                                          kwargs, self.vm, self.err,
                                           devobj=devobj)
 
     def config_filesystem_apply(self, devobj):
@@ -2309,8 +2322,9 @@ class vmmDetails(vmmGObjectUI):
                 return False
             kwargs["newdev"] = self.fsDetails.get_dev()
 
-        return self._change_config_helper(self.vm.define_filesystem,
-                                          kwargs, devobj=devobj)
+        return vmmAddHardware.change_config_helper(self.vm.define_filesystem,
+                                          kwargs, self.vm, self.err,
+                                          devobj=devobj)
 
     def config_hostdev_apply(self, devobj):
         kwargs = {}
@@ -2318,7 +2332,8 @@ class vmmDetails(vmmGObjectUI):
         if self.edited(EDIT_HOSTDEV_ROMBAR):
             kwargs["rom_bar"] = self.widget("hostdev-rombar").get_active()
 
-        return self._change_config_helper(self.vm.define_hostdev, kwargs,
+        return vmmAddHardware.change_config_helper(self.vm.define_hostdev,
+                                          kwargs, self.vm, self.err,
                                           devobj=devobj)
 
 
@@ -2359,60 +2374,6 @@ class vmmDetails(vmmGObjectUI):
             buttons=Gtk.ButtonsType.OK,
             dialog_type=Gtk.MessageType.INFO)
 
-    def _change_config_helper(self, define_func, define_args,
-                              devobj=None,
-                              hotplug_args=None):
-        hotplug_args = hotplug_args or {}
-
-        # Persistent config change
-        try:
-            if devobj:
-                define_func(devobj, False, **define_args)
-            else:
-                define_func(**define_args)
-            self.vm.redefine_cached()
-        except Exception, e:
-            self.err.show_err((_("Error changing VM configuration: %s") %
-                              str(e)))
-            # If we fail, make sure we flush the cache
-            self.vm.refresh_xml()
-            return False
-
-        # Hotplug change
-        hotplug_err = None
-        if self.vm.is_active():
-            try:
-                if devobj:
-                    hotplug_args["device"] = define_func(
-                        devobj, True, **define_args)
-                if hotplug_args:
-                    self.vm.hotplug(**hotplug_args)
-            except Exception, e:
-                logging.debug("Hotplug failed: %s", str(e))
-                hotplug_err = ((str(e), "".join(traceback.format_exc())))
-
-        if (hotplug_err or (self.vm.is_active() and not hotplug_args)):
-            if len(define_args) > 1:
-                msg = _("Some changes may require a guest shutdown "
-                        "to take effect.")
-            else:
-                msg = _("These changes will take effect after "
-                        "the next guest shutdown.")
-
-            dtype = (hotplug_err and
-                     Gtk.MessageType.WARNING or Gtk.MessageType.INFO)
-            hotplug_msg = ""
-            if hotplug_err:
-                hotplug_msg += (hotplug_err[0] + "\n\n" +
-                                hotplug_err[1] + "\n")
-
-            self.err.show_err(msg,
-                              details=hotplug_msg,
-                              buttons=Gtk.ButtonsType.OK,
-                              dialog_type=dtype)
-
-        return True
-
 
     ########################
     # Details page refresh #
-- 
1.9.0




More information about the virt-tools-list mailing list