feat: show suffix-matched metric coverage in host info threshold table
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -143,6 +143,25 @@ def _build_host_info(host, threshold_checker=None) -> dict:
|
||||
thresholds = None
|
||||
if threshold_checker is not None:
|
||||
raw = threshold_checker.get_thresholds_for_host(host.name)
|
||||
|
||||
# Build reverse coverage: which metric paths suffix-match to each threshold.
|
||||
# Mirrors the logic in ThresholdChecker._find_threshold.
|
||||
coverage: dict = {}
|
||||
for plugin_name, samples in host.plugin_data.items():
|
||||
if not samples:
|
||||
continue
|
||||
_, pdata = samples[-1]
|
||||
for field_name in pdata:
|
||||
full_path = f"{plugin_name}.{field_name}"
|
||||
if full_path in raw:
|
||||
continue # exact match — the threshold IS this metric
|
||||
parts = field_name.split("_")
|
||||
for i in range(1, len(parts)):
|
||||
candidate = f"{plugin_name}." + "_".join(parts[i:])
|
||||
if candidate in raw:
|
||||
coverage.setdefault(candidate, []).append(full_path)
|
||||
break
|
||||
|
||||
thresholds = sorted(
|
||||
[
|
||||
{
|
||||
@@ -150,6 +169,7 @@ def _build_host_info(host, threshold_checker=None) -> dict:
|
||||
"warning": tc.warning,
|
||||
"critical": tc.critical,
|
||||
"operator": tc.operator.value,
|
||||
"covers": sorted(coverage.get(tc.metric_path, [])),
|
||||
}
|
||||
for tc in raw.values()
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user