From 7d3041aff3855365f9e393aadc489b8475eaeba5 Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Fri, 31 Oct 2008 13:56:47 +0000 Subject: [PATCH] * python/virConnect.py: needed for events from the python bindings by Ben Guthro daniel --- ChangeLog | 5 +++++ python/virConnect.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 python/virConnect.py diff --git a/ChangeLog b/ChangeLog index d2b778cf02..63f27651c1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Oct 31 14:55:46 CET 2008 Daniel Veillard + + * python/virConnect.py: needed for events from the python bindings + by Ben Guthro + Fri Oct 31 14:04:52 CET 2008 Daniel Veillard * src/xm_internal.c: add minimum domain memory size check for Xen diff --git a/python/virConnect.py b/python/virConnect.py new file mode 100644 index 0000000000..ec29b33fca --- /dev/null +++ b/python/virConnect.py @@ -0,0 +1,43 @@ + def __del__(self): + try: + for cb,opaque in self.domainEventCallbacks.items(): + del self.domainEventCallbacks[cb] + self.domainEventCallbacks = None + libvirtmod.virConnectDomainEventDeregister(self._o, self) + except AttributeError: + pass + + if self._o != None: + libvirtmod.virConnectClose(self._o) + self._o = None + + def domainEventDeregister(self, cb): + """Removes a Domain Event Callback. De-registering for a + domain callback will disable delivery of this event type """ + try: + del self.domainEventCallbacks[cb] + if len(self.domainEventCallbacks) == 0: + ret = libvirtmod.virConnectDomainEventDeregister(self._o, self) + if ret == -1: raise libvirtError ('virConnectDomainEventDeregister() failed', conn=self) + except AttributeError: + pass + + def domainEventRegister(self, cb, opaque): + """Adds a Domain Event Callback. Registering for a domain + callback will enable delivery of the events """ + try: + self.domainEventCallbacks[cb] = opaque + except AttributeError: + self.domainEventCallbacks = {cb:opaque} + ret = libvirtmod.virConnectDomainEventRegister(self._o, self) + if ret == -1: raise libvirtError ('virConnectDomainEventRegister() failed', conn=self) + + def dispatchDomainEventCallbacks(self, dom, event): + """Dispatches events to python user domain event callbacks + """ + try: + for cb,opaque in self.domainEventCallbacks.items(): + cb(self,dom,event,opaque) + return 0 + except AttributeError: + pass