1
2
3
4
5
6
7
8
9
10
11
12
13 from Globals import *
14 import time
15 import socket
16 from Products.ZenUtils.ZCmdBase import ZCmdBase
17 from Products.ZenEvents import Event
18 from twisted.internet import defer, reactor
19
20 DEFAULT_MONITOR = "localhost"
21
23
24 - def main_loop(self):
25 raise NotImplementedError("Your daemon must define this method.")
26
30
31 - def finish(self, results=None):
33
35 """Send event to the system.
36 """
37 self.dmd.ZenEventManager.sendEvent(evt)
38
46
58
59 - def sigTerm(self, signum=None, frame=None):
60 """
61 Controlled shutdown of main loop on interrupt.
62 """
63 try:
64 ZCmdBase.sigTerm(self, signum, frame)
65 except SystemExit:
66 self.finish()
67
69 ZCmdBase.buildOptions(self)
70 self.parser.add_option('--cycletime',
71 dest='cycletime', default=60, type="int",
72 help="check events every cycletime seconds")
73 self.parser.add_option(
74 '--zopeurl', dest='zopeurl',
75 default='http://%s:%d' % (socket.getfqdn(), 8080),
76 help="http path to the root of the zope server")
77 self.parser.add_option("--monitor", dest="monitor",
78 default=DEFAULT_MONITOR,
79 help="Name of monitor instance to use for heartbeat "
80 " events. Default is %s." % DEFAULT_MONITOR)
81