MKP 3.2.0 released, fixed bugs when users are deleted and rules without levels are active

This commit is contained in:
2026-03-09 11:25:48 +00:00
parent bf470d5d6c
commit 7f58381fd3
9 changed files with 87 additions and 40 deletions

View File

@@ -3,6 +3,7 @@
# pylint: disable=line-too-long, too-many-branches, too-many-locals, too-many-statements
from datetime import datetime
from typing import Final
from cmk.agent_based.v2 import (
AgentSection,
@@ -17,6 +18,7 @@ from cmk.agent_based.v2 import (
DiscoveryResult,
)
NO_LEVELS: Final[str] = "no_levels"
def get_state_upper(levels, value):
warn, crit = levels
@@ -43,8 +45,8 @@ def discover_nextcloud_info(section) -> DiscoveryResult:
def check_nextcloud_info(params, section) -> CheckResult:
for key in section:
if key == "nextcloud":
_level_type, levels_free_space = params["levels_free_space"]
_level_type, levels_number_of_files = params["levels_number_of_files"]
level_type_free_space, levels_free_space = params["levels_free_space"]
level_type_number_of_files, levels_number_of_files = params["levels_number_of_files"]
# update infos are available only from Nextcloud version 28 onwards
try:
last_update = section[key]["last_update"]
@@ -89,19 +91,28 @@ def check_nextcloud_info(params, section) -> CheckResult:
# Create result for free space on disk
# Levels for free space are given in GBytes, we have to adjust this here
warn, crit = levels_free_space
warn = warn * 1024 * 1024 * 1024
crit = crit * 1024 * 1024 * 1024
state = get_state_lower((warn, crit), free_space)
# create graph for free space on disk
yield Metric("nc_free_space", free_space, levels=(warn, crit))
if level_type_free_space != NO_LEVELS:
warn, crit = levels_free_space
warn = warn * 1024 * 1024 * 1024
crit = crit * 1024 * 1024 * 1024
state = get_state_lower((warn, crit), free_space)
# create graph for free space on disk
yield Metric("nc_free_space", free_space, levels=(warn, crit))
else:
# a rule with no levels set is active, assume OK state
state = State.OK
yield Metric("nc_free_space", free_space)
notice = f"Remaining free space on disk: {render.bytes(free_space)}"
if state != State.OK:
yield Result(state=state, notice=notice)
# Create result for number of files
warn, crit = levels_number_of_files
state = get_state_upper((warn, crit), num_files)
if level_type_number_of_files != NO_LEVELS:
warn, crit = levels_number_of_files
state = get_state_upper((warn, crit), num_files)
else:
# a rule with no levels set is active, assume OK state
state = State.OK
notice = f"Number of files: {num_files}"
if state != State.OK:
yield Result(state=state, notice=notice)
@@ -139,14 +150,22 @@ def check_nextcloud_info(params, section) -> CheckResult:
else:
app_versions = ""
# create graphs for number of apps
_level_type, levels = params["levels_apps_with_updates_available"]
level_type, levels = params["levels_apps_with_updates_available"]
yield Metric("nc_num_apps_installed", num_apps_installed)
yield Metric(
"nc_apps_with_updates_available",
num_apps_with_updates_available,
levels=levels,
)
state = get_state_upper(levels, num_apps_with_updates_available)
if level_type != NO_LEVELS:
yield Metric(
"nc_apps_with_updates_available",
num_apps_with_updates_available,
levels=levels,
)
state = get_state_upper(levels, num_apps_with_updates_available)
else:
# a rule with no levels set is active, assume OK state
yield Metric(
"nc_apps_with_updates_available",
num_apps_with_updates_available,
)
state = State.OK
if app_versions == "":
notice = f"Number of installed apps: {num_apps_installed}\nNumber of apps with updates available: {num_apps_with_updates_available}"
else: