183 lines
6.4 KiB
Python
Executable file
183 lines
6.4 KiB
Python
Executable file
#!/usr/bin/python -tt
|
|
|
|
import sys
|
|
import time
|
|
import getopt
|
|
from lib.core.daemon import Daemon
|
|
from lib.config.config import Config
|
|
from lib.core import logger
|
|
from apscheduler.scheduler import Scheduler
|
|
import pprint
|
|
|
|
NAME = "linspector"
|
|
VERSION = "0.1/TETRIS"
|
|
|
|
_configfile = str(sys.path[0]) + "/linspector.json"
|
|
_logfile = str(sys.path[0]) + "/linspector.log"
|
|
_pidfile = "/tmp/linspector.pid"
|
|
|
|
|
|
class LinspectorDaemon(Daemon):
|
|
def run(self):
|
|
"""
|
|
parse the joblist here and add each job to cron.
|
|
"""
|
|
sched = Scheduler()
|
|
sched.start()
|
|
|
|
x = sched.add_cron_job(job_function, second='*/1', args=['1!'])
|
|
if x is not None:
|
|
logger.writeLogToFile(_logfile, str(x.__dict__))
|
|
else:
|
|
logger.writeLogToFile(_logfile, "sdfasdfsdf")
|
|
|
|
sched.add_cron_job(job_function, second='*/2', args=['2!'])
|
|
sched.add_cron_job(job_function, second='*/4', args=['4!'])
|
|
sched.add_cron_job(job_function, second='*/5', args=['5!'])
|
|
sched.add_cron_job(job_function, second='*/8', args=['8!'])
|
|
sched.add_cron_job(job_function, second='*/10', args=['10!'])
|
|
sched.add_cron_job(job_function, second='*/20', args=['20!'])
|
|
sched.add_cron_job(job_function, second='*/40', args=['40!'])
|
|
sched.add_cron_job(job_function, second='*', args=['0!'])
|
|
|
|
while True:
|
|
try:
|
|
logger.writeLogToFile(_logfile, "Running!")
|
|
except Exception as err:
|
|
logger.writeLogToFile(_logfile, str(err))
|
|
sys.exit(1)
|
|
time.sleep(1)
|
|
|
|
|
|
def job_function(mes):
|
|
logger.writeLogToFile(_logfile, "Function: job_function says " + str(mes) + ", from cron.")
|
|
|
|
|
|
def usage():
|
|
print "usage: linspector [-cdhlprsSvV]"
|
|
print "-c, --config=FILE select configfile to use"
|
|
print "-d, --daemonize daemonize process"
|
|
print "-h, --help this help"
|
|
print "-l, --logfile=FILE set logfile to use"
|
|
print "-p, --pidfile=FILE set the pidfile to use (default: /tmp/linspector.pid)"
|
|
print "-r, --restart restart the daemon"
|
|
print "-s, --start start the daemon"
|
|
print "-S, --stop stop the daemon"
|
|
print "-v, --verbose verbose mode"
|
|
print "-V, --version show version information"
|
|
|
|
|
|
def version():
|
|
print NAME + " " + VERSION
|
|
print "copyright (c) 2011-2013 by Johannes Findeisen and Rafael Timmerberg"
|
|
|
|
|
|
def main():
|
|
try:
|
|
opts, args = getopt.getopt(sys.argv[1:],
|
|
"hl:c:p:vVrsS",
|
|
["help", "logfile=",
|
|
"config=", "pidfile=",
|
|
"verbose", "version",
|
|
"restart", "start", "stop"])
|
|
except getopt.GetoptError, err:
|
|
print str(err)
|
|
usage()
|
|
sys.exit(2)
|
|
verbose = False
|
|
restart = False
|
|
start = False
|
|
stop = False
|
|
for o, a in opts:
|
|
if o in ("-v", "--verbose"):
|
|
verbose = True
|
|
elif o in ("-V", "--version"):
|
|
version()
|
|
sys.exit()
|
|
elif o in ("-h", "--help"):
|
|
usage()
|
|
sys.exit()
|
|
elif o in ("-c", "--config"):
|
|
configfile = a
|
|
global _configfile
|
|
_configfile = a
|
|
elif o in ("-l", "--logfile"):
|
|
logfile = a
|
|
global _logfile
|
|
_logfile = a
|
|
elif o in ("-p", "--pidfile"):
|
|
pidfile = a
|
|
global _pidfile
|
|
_pidfile = a
|
|
elif o in ("-r", "--restart"):
|
|
restart = True
|
|
elif o in ("-s", "--start"):
|
|
start = True
|
|
elif o in ("-S", "--stop"):
|
|
stop = True
|
|
|
|
if start is True or restart is True:
|
|
config = Config(_configfile)
|
|
#pprint.pprint(str(config.layouts))
|
|
#pprint.pprint(str(config.dict["hostgroups"]))
|
|
#pprint.pprint(str(config.filters.))
|
|
|
|
"""
|
|
for service in config.services:
|
|
pprint.pprint(str(service))
|
|
|
|
for filter in config.filters:
|
|
pprint.pprint(str(filter))
|
|
|
|
for member in config.members:
|
|
pprint.pprint(str(member))
|
|
|
|
for period in config.periods:
|
|
pprint.pprint(str(period))
|
|
|
|
for host in config.hosts:
|
|
pprint.pprint(str(host))
|
|
"""
|
|
|
|
for hostgroup in config.hostgroups:
|
|
pprint.pprint(str(hostgroup))
|
|
|
|
#for layout in config.layouts.layouts:
|
|
# pprint.pprint(str(layout
|
|
|
|
#logger.writeLogToFile(_logfile, "config.layouts.lyouts: " + str([str(i) for i in config.layouts.layouts]))
|
|
#logger.writeLogToFile(_logfile, "config.hostgroups: " + config.hostgroups)
|
|
#logger.writeLogToFile(_logfile, "config.hosts: " + str([str(i) for i in config.hosts]))
|
|
#logger.writeLogToFile(_logfile, "config.services: " + str([str(i) for i in config.services]))
|
|
#logger.writeLogToFile(_logfile, "config.members: " + str([str(i) for i in config.members]))
|
|
#logger.writeLogToFile(_logfile, "config.periods: " + str([str(i) for i in config.periods]))
|
|
#logger.writeLogToFile(_logfile, "config.filters: " + str([str(i) for i in config.filters]))
|
|
#logger.writeLogToFile(_logfile, "X:" + config.periods[0])
|
|
|
|
"""
|
|
linspector = LinspectorDaemon(_pidfile)
|
|
|
|
if start is True:
|
|
logger.writeLogToFile(_logfile, "Starting Linspector...")
|
|
logger.writeLogToFile(_logfile, "Path: " + str(sys.path[0]))
|
|
logger.writeLogToFile(_logfile, "Configfile: " + _configfile)
|
|
logger.writeLogToFile(_logfile, "Logfile: " + _logfile)
|
|
logger.writeLogToFile(_logfile, "Pidfile: " + _pidfile)
|
|
linspector.start()
|
|
elif stop is True:
|
|
logger.writeLogToFile(_logfile, "Stopping Linspector...")
|
|
logger.writeLogToFile(_logfile, "Pidfile: " + _pidfile)
|
|
linspector.stop()
|
|
logger.writeLogToFile(_logfile, "Terminated!")
|
|
elif restart is True:
|
|
logger.writeLogToFile(_logfile, "Restarting Linspector...")
|
|
logger.writeLogToFile(_logfile, "Path: " + str(sys.path[0]))
|
|
logger.writeLogToFile(_logfile, "Configfile: " + _configfile)
|
|
logger.writeLogToFile(_logfile, "Logfile: " + _logfile)
|
|
logger.writeLogToFile(_logfile, "Pidfile: " + _pidfile)
|
|
linspector.restart()
|
|
sys.exit(0)
|
|
"""
|
|
|
|
if __name__ == "__main__":
|
|
main()
|