libvirt-override-virConnect.py 7.1 KB
Newer Older
1 2 3 4
    def __del__(self):
        try:
           for cb,opaque in self.domainEventCallbacks.items():
               del self.domainEventCallbacks[cb]
5
           del self.domainEventCallbacks
6 7 8 9 10 11 12 13 14 15 16 17 18 19
           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:
20
                del self.domainEventCallbacks
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
                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)

36
    def _dispatchDomainEventCallbacks(self, dom, event, detail):
37 38 39 40
        """Dispatches events to python user domain event callbacks
        """
        try:
            for cb,opaque in self.domainEventCallbacks.items():
41
                cb(self,dom,event,detail,opaque)
42 43 44
            return 0
        except AttributeError:
            pass
45

46
    def _dispatchDomainEventLifecycleCallback(self, dom, event, detail, cbData):
D
Daniel P. Berrange 已提交
47
        """Dispatches events to python user domain lifecycle event callbacks
48 49 50 51 52 53 54
        """
        cb = cbData["cb"]
        opaque = cbData["opaque"]

        cb(self, virDomain(self, _obj=dom), event, detail, opaque)
        return 0

55
    def _dispatchDomainEventGenericCallback(self, dom, cbData):
D
Daniel P. Berrange 已提交
56
        """Dispatches events to python user domain generic event callbacks
57
        """
58 59
        cb = cbData["cb"]
        opaque = cbData["opaque"]
60

61 62
        cb(self, virDomain(self, _obj=dom), opaque)
        return 0
63

64
    def _dispatchDomainEventRTCChangeCallback(self, dom, offset, cbData):
D
Daniel P. Berrange 已提交
65 66
        """Dispatches events to python user domain RTC change event callbacks
        """
67 68
        cb = cbData["cb"]
        opaque = cbData["opaque"]
D
Daniel P. Berrange 已提交
69

70 71
        cb(self, virDomain(self, _obj=dom), offset ,opaque)
        return 0
D
Daniel P. Berrange 已提交
72

73
    def _dispatchDomainEventWatchdogCallback(self, dom, action, cbData):
D
Daniel P. Berrange 已提交
74 75
        """Dispatches events to python user domain watchdog event callbacks
        """
76 77
        cb = cbData["cb"]
        opaque = cbData["opaque"]
D
Daniel P. Berrange 已提交
78

79 80
        cb(self, virDomain(self, _obj=dom), action, opaque)
        return 0
D
Daniel P. Berrange 已提交
81

82 83
    def _dispatchDomainEventIOErrorCallback(self, dom, srcPath, devAlias,
                                            action, cbData):
D
Daniel P. Berrange 已提交
84 85
        """Dispatches events to python user domain IO error event callbacks
        """
86 87
        cb = cbData["cb"]
        opaque = cbData["opaque"]
D
Daniel P. Berrange 已提交
88

89 90
        cb(self, virDomain(self, _obj=dom), srcPath, devAlias, action, opaque)
        return 0
91

92 93 94
    def _dispatchDomainEventIOErrorReasonCallback(self, dom, srcPath,
                                                  devAlias, action, reason,
                                                  cbData):
95 96
        """Dispatches events to python user domain IO error event callbacks
        """
97 98
        cb = cbData["cb"]
        opaque = cbData["opaque"]
99

100 101 102
        cb(self, virDomain(self, _obj=dom), srcPath, devAlias, action,
           reason, opaque)
        return 0
D
Daniel P. Berrange 已提交
103

104 105 106
    def _dispatchDomainEventGraphicsCallback(self, dom, phase, localAddr,
                                            remoteAddr, authScheme, subject,
                                            cbData):
D
Daniel P. Berrange 已提交
107 108
        """Dispatches events to python user domain graphics event callbacks
        """
109 110
        cb = cbData["cb"]
        opaque = cbData["opaque"]
D
Daniel P. Berrange 已提交
111

112 113 114
        cb(self, virDomain(self, _obj=dom), phase, localAddr, remoteAddr,
           authScheme, subject, opaque)
        return 0
D
Daniel P. Berrange 已提交
115

116 117 118 119 120 121 122 123 124 125 126 127
    def dispatchDomainEventBlockPullCallback(self, dom, path, type, status, cbData):
        """Dispatches events to python user domain blockJob event callbacks
        """
        try:
            cb = cbData["cb"]
            opaque = cbData["opaque"]

            cb(self, virDomain(self, _obj=dom), path, type, status, opaque)
            return 0
        except AttributeError:
            pass

128 129 130 131 132 133 134 135 136
    def _dispatchDomainEventDiskChangeCallback(self, dom, oldSrcPath, newSrcPath, devAlias, reason, cbData):
        """Dispatches event to python user domain diskChange event callbacks
        """
        cb = cbData["cb"]
        opaque = cbData["opaque"]

        cb(self, virDomain(self, _obj=dom), oldSrcPath, newSrcPath, devAlias, reason, opaque)
        return 0;

137 138 139 140 141 142 143 144 145
    def _dispatchDomainEventTrayChangeCallback(self, dom, devAlias, reason, cbData):
        """Dispatches event to python user domain trayChange event callbacks
        """
        cb = cbData["cb"]
        opaque = cbData["opaque"]

        cb(self, virDomain(self, _obj=dom), devAlias, reason, opaque)
        return 0;

O
Osier Yang 已提交
146 147 148 149 150 151 152 153
    def _dispatchDomainEventPMWakeupCallback(self, dom, reason, cbData):
        """Dispatches event to python user domain pmwakeup event callbacks
        """
        cb = cbData["cb"]
        opaque = cbData["opaque"]

        cb(self, virDomain(self, _obj=dom), reason, opaque)
        return 0;
154

O
Osier Yang 已提交
155 156 157 158 159 160 161 162 163
    def _dispatchDomainEventPMSuspendCallback(self, dom, reason, cbData):
        """Dispatches event to python user domain pmsuspend event callbacks
        """
        cb = cbData["cb"]
        opaque = cbData["opaque"]

        cb(self, virDomain(self, _obj=dom), reason, opaque)
        return 0;

164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
    def domainEventDeregisterAny(self, callbackID):
        """Removes a Domain Event Callback. De-registering for a
           domain callback will disable delivery of this event type """
        try:
            ret = libvirtmod.virConnectDomainEventDeregisterAny(self._o, callbackID)
            if ret == -1: raise libvirtError ('virConnectDomainEventDeregisterAny() failed', conn=self)
            del self.domainEventCallbackID[callbackID]
        except AttributeError:
            pass

    def domainEventRegisterAny(self, dom, eventID, cb, opaque):
        """Adds a Domain Event Callback. Registering for a domain
           callback will enable delivery of the events """
        if not hasattr(self, 'domainEventCallbackID'):
            self.domainEventCallbackID = {}
        cbData = { "cb": cb, "conn": self, "opaque": opaque }
        if dom is None:
            ret = libvirtmod.virConnectDomainEventRegisterAny(self._o, None, eventID, cbData)
        else:
            ret = libvirtmod.virConnectDomainEventRegisterAny(self._o, dom._o, eventID, cbData)
        if ret == -1:
            raise libvirtError ('virConnectDomainEventRegisterAny() failed', conn=self)
        self.domainEventCallbackID[ret] = opaque
187
        return ret