[virt-tools-list] [PATCH] Use dode device update event support

Jovanka Gulicoska jovanka.gulicoska at gmail.com
Wed Aug 17 08:32:36 UTC 2016


API will be available in upcoming libvirt 2.2.0
---
 virtManager/connection.py | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/virtManager/connection.py b/virtManager/connection.py
index 44f9bb5..8ef39a8 100644
--- a/virtManager/connection.py
+++ b/virtManager/connection.py
@@ -809,6 +809,18 @@ class vmmConnection(vmmGObject):
 
         self.schedule_priority_tick(pollnodedev=True, force=True)
 
+    def _node_device_update_event(self, conn, dev, userdata):
+        ignore = conn
+        ignore = userdata
+
+        name = dev.name()
+        logging.debug("node device update event: device=%s", name)
+
+        obj = self.get_nodedev(name)
+
+        if obj:
+            self.idle_add(obj.recache_from_event_loop)
+
     def _add_conn_events(self):
         if not self.check_support(support.SUPPORT_CONN_WORKING_XEN_EVENTS):
             return
@@ -894,6 +906,21 @@ class vmmConnection(vmmGObject):
             logging.debug("Error registering node device events: %s", e)
 
 
+        def _add_node_device_update_event(eventid, typestr):
+            if not self.using_node_device_events:
+                return
+            try:
+                self._node_device_cb_ids.append(
+                    self.get_backend().nodeDeviceEventRegisterAny(
+                    None, eventid, self._node_device_update_event, None))
+            except Exception, e:
+                logging.debug("Error registering node device %s event: %s",
+                    typestr, e)
+
+        _add_node_device_update_event(
+            getattr(libvirt, "VIR_NODE_DEVICE_EVENT_ID_UPDATE", 1),
+            "update")
+
     ######################################
     # Connection closing/opening methods #
     ######################################
-- 
2.7.4




More information about the virt-tools-list mailing list