1
2
3
4
5
6
7
8
9
10
11
12
13 from twisted.spread import pb
14
15 import logging
16 import time
17 import socket
18
20
22 self.log = logging.getLogger('zen.hub')
23 self.fqdn = socket.getfqdn()
24 self.dmd = dmd
25 self.zem = dmd.ZenEventManager
26 self.instance = instance
27 self.listeners = []
28 self.callTime = 0.
29 self.methodPriorityMap = {}
30
33
43
46
49
52
54 remote.notifyOnDisconnect(self.removeListener)
55 self.log.debug("adding listener for %s:%s", self.instance, self.name())
56 self.listeners.append(remote)
57
59 self.log.debug("removing listener for %s:%s", self.instance, self.name())
60 try:
61 self.listeners.remove(listener)
62 except ValueError:
63 self.warning("Unable to remove listener... ignoring")
64
66 if self.methodPriorityMap.has_key(methodName):
67 return self.methodPriorityMap[methodName]
68 return 0.4
69
72
74 event = event.copy()
75 event['agent'] = 'zenhub'
76 event['monitor'] = self.instance
77 event['manager'] = self.fqdn
78 event.update(kw)
79 self.zem.sendEvent(event)
80