[virt-tools-list] [PATCH] Edit description using SetMetadata when available

Marcus Karlsson mk at acc.umu.se
Tue Oct 16 21:26:06 UTC 2012


Since 0.9.10 libvirt supports editing a domain's metadata using the
SetMetadata API. Using that API the description of a domain can be
edited as it is running.

Make virt-manager edit the description of a domain using SetMetadata
when available.
---
 src/virtManager/details.py |   11 +----------
 src/virtManager/domain.py  |   17 +++++++++++++++++
 2 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/src/virtManager/details.py b/src/virtManager/details.py
index 35dc833..e57903a 100644
--- a/src/virtManager/details.py
+++ b/src/virtManager/details.py
@@ -2033,16 +2033,7 @@ class vmmDetails(vmmGObjectUI):
             desc_widget = self.widget("overview-description")
             desc = desc_widget.get_buffer().get_property("text") or ""
             add_define(self.vm.define_description, desc)
-
-            # Hack so that we don't get a warning that
-            # 'changes take effect after reboot'
-            # We already fake hotplug like behavior, by reading the
-            # description from the inactive XML from a running VM
-            #
-            # libvirt since 0.9.10 provides a SetMetadata API that provides
-            # actual <description> 'hotplug', but using that means checking
-            # for support, version, etc, so let's stick with the easy way
-            add_hotplug(lambda d: d, desc)
+            add_hotplug(self.vm.hotplug_description, desc)
 
         return self._change_config_helper(df, da, hf, ha)
 
diff --git a/src/virtManager/domain.py b/src/virtManager/domain.py
index d536f77..cc446c4 100644
--- a/src/virtManager/domain.py
+++ b/src/virtManager/domain.py
@@ -813,6 +813,23 @@ class vmmDomain(vmmLibvirtObject):
         devobj.passwd = newval or None
         self.update_device(devobj)
 
+    def hotplug_description(self, desc):
+        # We already fake hotplug like behavior, by reading the
+        # description from the inactive XML from a running VM
+        #
+        # libvirt since 0.9.10 provides a SetMetadata API that provides
+        # actual <description> 'hotplug', and using that means checkig
+        # for support, version, etc.
+        if not virtinst.support.check_domain_support(self._backend,
+                virtinst.support.SUPPORT_DOMAIN_SET_METADATA):
+            return
+
+        flags = (libvirt.VIR_DOMAIN_AFFECT_LIVE |
+                libvirt.VIR_DOMAIN_AFFECT_CONFIG)
+        self._backend.setMetadata(
+                libvirt.VIR_DOMAIN_METADATA_DESCRIPTION,
+                desc, None, None, flags)
+
 
     ########################
     # Libvirt API wrappers #
-- 
1.7.10.4




More information about the virt-tools-list mailing list