1 from Globals import *
2 import time
3 import socket
4 from Products.ZenUtils.ZCmdBase import ZCmdBase
5 from Products.ZenEvents import Event
6 from twisted.internet import defer, reactor
7
8 DEFAULT_MONITOR = "localhost"
9
11
12 - def main_loop(self):
13 raise NotImplementedError("Your daemon must define this method.")
14
18
19 - def finish(self, results=None):
21
23 """Send event to the system.
24 """
25 self.dmd.ZenEventManager.sendEvent(evt)
26
34
46
47 - def sigTerm(self, signum=None, frame=None):
48 """
49 Controlled shutdown of main loop on interrupt.
50 """
51 try:
52 ZCmdBase.sigTerm(self, signum, frame)
53 except SystemExit:
54 self.finish()
55
57 ZCmdBase.buildOptions(self)
58 self.parser.add_option('--cycletime',
59 dest='cycletime', default=60, type="int",
60 help="check events every cycletime seconds")
61 self.parser.add_option(
62 '--zopeurl', dest='zopeurl',
63 default='http://%s:%d' % (socket.getfqdn(), 8080),
64 help="http path to the root of the zope server")
65 self.parser.add_option("--monitor", dest="monitor",
66 default=DEFAULT_MONITOR,
67 help="Name of monitor instance to use for heartbeat "
68 " events. Default is %s." % DEFAULT_MONITOR)
69