1
2
3
4
5
6
7
8
9
10
11
12
13 from Globals import *
14 import socket
15 from Products.ZenUtils.ZCmdBase import ZCmdBase
16 from Products.ZenUtils.Utils import getDefaultZopeUrl
17 from Products.ZenEvents import Event
18 from twisted.internet import reactor, defer
19
20 DEFAULT_MONITOR = "localhost"
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
47 @defer.inlineCallbacks
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=getDefaultZopeUrl(),
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