MKP 2.2.0 released, bugfixes for rules with no levels set

This commit is contained in:
2026-03-09 16:06:42 +00:00
parent 027a303af1
commit 74e20a8e8e
5 changed files with 33 additions and 26 deletions

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env python3
# pylint: disable=line-too-long, simplifiable-if-statement, missing-module-docstring, too-many-locals
# import necessary elements from API version 2
from cmk.agent_based.v2 import (
AgentSection,
@@ -16,6 +17,9 @@ def get_state_upper(
levels: tuple[int | float, int | float], value: int | float
) -> State:
"""returns OK/WARN/CRIT depending on the given parameters"""
if levels is None:
# a rule with no levels set is active, assume OK state
return State.OK
warn, crit = levels
if value >= crit:
return State.CRIT
@@ -62,9 +66,9 @@ def discover_mailcow_info(section):
def check_mailcow_info(params, section):
"""the check function"""
# get thresholds
_type, levels_num_domains = params["levels_num_domains"]
_type, levels_num_mailboxes = params["levels_num_mailboxes"]
_type, levels_num_global_messages = params["levels_num_global_messages"]
_level_type, levels_num_domains = params["levels_num_domains"]
_level_type, levels_num_mailboxes = params["levels_num_mailboxes"]
_level_type, levels_num_global_messages = params["levels_num_global_messages"]
# get all section data
version: str = section["version"]
git_version: str = section["git_version"]
@@ -74,17 +78,6 @@ def check_mailcow_info(params, section):
num_mailboxes: int = section["num_mailboxes"]
num_global_messages: int = section["num_global_messages"]
# create graphs for number of domains, mailboxes and messages
yield Metric(name="mc_num_domains", value=num_domains, levels=levels_num_domains)
yield Metric(
name="mc_num_mailboxes", value=num_mailboxes, levels=levels_num_mailboxes
)
yield Metric(
name="mc_num_global_messages",
value=num_global_messages,
levels=levels_num_global_messages,
)
# create overall result
if check_version_enabled:
if update_available:
@@ -100,22 +93,28 @@ def check_mailcow_info(params, section):
yield Result(state=state, summary=summary, details=details)
# Create result for number of domains
warn, crit = levels_num_domains
state = get_state_upper((warn, crit), num_domains)
state = get_state_upper(levels_num_domains, num_domains)
yield Metric(name="mc_num_domains", value=num_domains, levels=levels_num_domains)
notice = f"Number of domains: {num_domains}"
if state != State.OK:
yield Result(state=state, notice=notice)
# Create result for number of mailboxes
warn, crit = levels_num_mailboxes
state = get_state_upper((warn, crit), num_mailboxes)
state = get_state_upper(levels_num_mailboxes, num_mailboxes)
yield Metric(
name="mc_num_mailboxes", value=num_mailboxes, levels=levels_num_mailboxes
)
notice = f"Number of mailboxes: {num_mailboxes}"
if state != State.OK:
yield Result(state=state, notice=notice)
# Create result for number of global messages
warn, crit = levels_num_global_messages
state = get_state_upper((warn, crit), num_global_messages)
state = get_state_upper(levels_num_global_messages, num_global_messages)
yield Metric(
name="mc_num_global_messages",
value=num_global_messages,
levels=levels_num_global_messages,
)
notice = f"Number of messages: {num_global_messages}"
if state != State.OK:
yield Result(state=state, notice=notice)