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