diff --git a/nextcloud/agent_based/nextcloud_users.py b/nextcloud/agent_based/nextcloud_users.py index 5a21c03..c28093b 100644 --- a/nextcloud/agent_based/nextcloud_users.py +++ b/nextcloud/agent_based/nextcloud_users.py @@ -3,6 +3,7 @@ # pylint: disable=line-too-long, too-many-locals from time import time +from pprint import pprint from cmk.agent_based.v2 import ( AgentSection, @@ -50,14 +51,17 @@ def check_nextcloud_users(item, params, section) -> CheckResult: last_login_human = section[item][4] last_login_since = section[item][5] free_space = quota_total_bytes - quota_used_bytes - # print(free_space) + if quota_total_bytes == -3.0: + # no quota set for user, we can't calculate free space and used percent + quota_is_set = False + else: + quota_is_set = True _level_type, levels_quota_used = params["levels_users_quota_used"] _level_type, levels_free_space = params["levels_users_free_space"] - if last_login_human == "never": - quota_used_percent = 0 + if (last_login_human == "never") or (not quota_is_set): details = f"User ID is '{userid}', Last login: {last_login_human}" summary = ( - f"Used quota of '{display_name}' can't be calculated yet (never logged in)" + f"Used quota of '{display_name}' can't be calculated yet (never logged in or no quota set)" ) else: # Levels are given in MBytes, we have to adjust this here @@ -71,6 +75,7 @@ def check_nextcloud_users(item, params, section) -> CheckResult: yield Metric("nc_users_free_space", free_space, levels=(warn, crit)) if state != State.OK: yield Result(state=state, notice=notice) + yield Metric("nc_users_free_space", free_space, levels=(warn, crit)) yield Metric("nc_users_quota_used", quota_used_percent, levels=levels_quota_used) state = get_state_upper(levels_quota_used, quota_used_percent) yield Result(state=state, summary=summary, details=details)