Add "default" probe timeout logic for server readings check

this way we don't have to set those timeouts on every single probe
This commit is contained in:
Lance Edgar 2018-10-23 10:25:08 -05:00
parent 1f8507508a
commit 30f0fe0a84
2 changed files with 101 additions and 2 deletions

View file

@ -229,8 +229,19 @@ class TempmonServerDaemon(Daemon):
return return
# delay even the first email, until configured threshold is reached # delay even the first email, until configured threshold is reached
timeout = probe.timeout_for_status(status) or 0 timeout = probe.timeout_for_status(status)
timeout = datetime.timedelta(minutes=timeout) 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 started = probe.status_started(status) or probe.status_changed
if (self.now - started) <= timeout: if (self.now - started) <= timeout:
return return

View file

@ -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 <http://www.gnu.org/licenses/>.
#
################################################################################
"""
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