From 30f0fe0a84e62a89d2e910b57cdae981c61de9cf Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Tue, 23 Oct 2018 10:25:08 -0500 Subject: [PATCH] Add "default" probe timeout logic for server readings check this way we don't have to set those timeouts on every single probe --- rattail_tempmon/server.py | 15 ++++++- rattail_tempmon/settings.py | 88 +++++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 rattail_tempmon/settings.py diff --git a/rattail_tempmon/server.py b/rattail_tempmon/server.py index 4c290bd..f416cee 100644 --- a/rattail_tempmon/server.py +++ b/rattail_tempmon/server.py @@ -229,8 +229,19 @@ class TempmonServerDaemon(Daemon): return # delay even the first email, until configured threshold is reached - timeout = probe.timeout_for_status(status) or 0 - timeout = datetime.timedelta(minutes=timeout) + timeout = probe.timeout_for_status(status) + if timeout is None: + if status == self.enum.TEMPMON_PROBE_STATUS_CRITICAL_HIGH_TEMP: + timeout = self.config.getint('rattail_tempmon', 'probe.default.critical_max_timeout') + elif status == self.enum.TEMPMON_PROBE_STATUS_HIGH_TEMP: + timeout = self.config.getint('rattail_tempmon', 'probe.default.good_max_timeout') + elif status == self.enum.TEMPMON_PROBE_STATUS_LOW_TEMP: + timeout = self.config.getint('rattail_tempmon', 'probe.default.good_min_timeout') + elif status == self.enum.TEMPMON_PROBE_STATUS_CRITICAL_LOW_TEMP: + timeout = self.config.getint('rattail_tempmon', 'probe.default.critical_min_timeout') + elif status == self.enum.TEMPMON_PROBE_STATUS_ERROR: + timeout = self.config.getint('rattail_tempmon', 'probe.default.error_timeout') + timeout = datetime.timedelta(minutes=timeout or 0) started = probe.status_started(status) or probe.status_changed if (self.now - started) <= timeout: return diff --git a/rattail_tempmon/settings.py b/rattail_tempmon/settings.py new file mode 100644 index 0000000..18172bb --- /dev/null +++ b/rattail_tempmon/settings.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8; -*- +################################################################################ +# +# Rattail -- Retail Software Framework +# Copyright © 2010-2018 Lance Edgar +# +# This file is part of Rattail. +# +# Rattail is free software: you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. +# +# Rattail is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# Rattail. If not, see . +# +################################################################################ +""" +Rattail Tempmon Settings +""" + +from __future__ import unicode_literals, absolute_import + +from rattail.settings import Setting + + +############################## +# TempMon +############################## + +class rattail_tempmon_probe_default_critical_max_timeout(Setting): + """ + Default value to be used as Critical High Timeout value, for any probe + which does not have this timeout defined. + """ + group = "TempMon" + namespace = 'rattail_tempmon' + name = 'probe.default.critical_max_timeout' + data_type = int + + +class rattail_tempmon_probe_default_critical_min_timeout(Setting): + """ + Default value to be used as Critical Low Timeout value, for any probe which + does not have this timeout defined. + """ + group = "TempMon" + namespace = 'rattail_tempmon' + name = 'probe.default.critical_min_timeout' + data_type = int + + +class rattail_tempmon_probe_default_error_timeout(Setting): + """ + Default value to be used as Error Timeout value, for any probe which does + not have this timeout defined. + """ + group = "TempMon" + namespace = 'rattail_tempmon' + name = 'probe.default.error_timeout' + data_type = int + + +class rattail_tempmon_probe_default_good_max_timeout(Setting): + """ + Default value to be used as High Timeout value, for any probe which does + not have this timeout defined. + """ + group = "TempMon" + namespace = 'rattail_tempmon' + name = 'probe.default.good_max_timeout' + data_type = int + + +class rattail_tempmon_probe_default_good_min_timeout(Setting): + """ + Default value to be used as Low Timeout value, for any probe which does not + have this timeout defined. + """ + group = "TempMon" + namespace = 'rattail_tempmon' + name = 'probe.default.good_min_timeout' + data_type = int