diff --git a/examples/minimal.json b/examples/minimal.json index 78defdc..6664fb3 100644 --- a/examples/minimal.json +++ b/examples/minimal.json @@ -2,26 +2,44 @@ "members":{ "root":{ "_name": "root", + "parent": "admin", "tasks": [ { "class": "storage/logger", - "type": [ "ok", "warning", "error" ], + "type": [ "ok" ], "args": { "directory": "/tmp/", "file": "data.log" } } ] + }, + "admin":{ + "_name": "admin", + "tasks": [ + { + "class": "alert/mail", + "type": [ "ok", "warning", "error" ], + "args": { "host": "localhost", + "port": 25, + "sender": "linspector@linspector.org", + "username": "", + "password": "", + "rcpt": "hanez@linspector.org" + } + } + ] } }, "periods": { "fast": { "seconds": 15 }, - "medium": { "seconds": 120 }, - "slow": { "seconds": 480 } + "medium": { "seconds": 60 }, + "slow": { "seconds": 480 }, + "now": {"date": "2013-12-29 00:09:00"} }, "hostgroups":{ "a":{ "members": ["root"], - "hosts": [ "a"], + "hosts": [ "151.217.0.0/16"], "services":[ - { "class": "etc/dummy", "args": { "sleep": 1, "fail": true }, "periods": ["fast"], "threshold": 1 } + { "class": "net/tcpconnect", "args":{ "port": 80 }, "periods": ["now"], "threshold": 1 } ] } }, diff --git a/linspector/config/periods.py b/linspector/config/periods.py index c25d46d..80fd8c8 100644 --- a/linspector/config/periods.py +++ b/linspector/config/periods.py @@ -19,6 +19,7 @@ along with this program. If not, see . """ from logging import getLogger +from apscheduler.util import convert_to_datetime logger = getLogger(__name__) @@ -48,7 +49,7 @@ class IntervalPeriod(Period): def createJob(self, scheduler, jobInfo, func, **kwargs): start_date = self.start_date - if kwargs["start_date"]: + if "start_date" in kwargs: start_date = kwargs["start_date"] return scheduler.add_interval_job(func, weeks=self.weeks, hours=self.hours, minutes=self.minutes, @@ -80,7 +81,8 @@ class CronPeriod(Period): def createJob(self, scheduler, jobInfo, func, **kwargs): start_date = self.start_date - if kwargs["start_date"]: + + if "start_date" in kwargs: start_date = kwargs["start_date"] return scheduler.add_cron_job(func, year=self.year, month=self.month, day=self.day, week=self.week, @@ -100,6 +102,12 @@ class DatePeriod(Period): def createJob(self, scheduler, jobInfo, func, **kwargs): try: + if "start_date" in kwargs: + earliest = kwargs["start_date"] + date = convert_to_datetime(self.date) + if date < earliest: + self.date = earliest + return scheduler.add_date_job(func=func, date=self.date, args=[jobInfo]) except Exception, e: - return None \ No newline at end of file + logger.error("exception while creating job out of DatePeriod!\n%s" % e) \ No newline at end of file