Module: check_mk
Branch: master
Commit: ab4c1ab48c09452748acfdea76f6b450105c4069
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=ab4c1ab48c0945…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Wed Mar 9 09:14:24 2016 +0100
3260 FIX Availability: ignores complete unmonitored objects in summary calculation
---
.werks/3260 | 10 ++++++++++
ChangeLog | 1 +
web/htdocs/availability.py | 13 +++++++++----
3 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/.werks/3260 b/.werks/3260
new file mode 100644
index 0000000..8990dde
--- /dev/null
+++ b/.werks/3260
@@ -0,0 +1,10 @@
+Title: Availability: ignores complete unmonitored objects in summary calculation
+Level: 1
+Component: multisite
+Class: fix
+Compatible: compat
+State: unknown
+Version: 1.2.9i1
+Date: 1457511172
+
+
diff --git a/ChangeLog b/ChangeLog
index ca94751..6a32aff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -86,6 +86,7 @@
* 3264 FIX: Fix display of values in graphs that are < 1.0
* 3273 FIX: Dashboard: The dashboard is now preserving edit/view state during page
reloads
* 3090 FIX: fixed perf-o-meter link leading to old graph page even when new graphs
are being used
+ * 3260 FIX: Availability: ignores complete unmonitored objects in summary
calculation
WATO:
* 3244 WATO BI Module: swap order of aggregation function and child node
selection...
diff --git a/web/htdocs/availability.py b/web/htdocs/availability.py
index 40fb346..4e004b2 100644
--- a/web/htdocs/availability.py
+++ b/web/htdocs/availability.py
@@ -751,7 +751,6 @@ def compute_availability(what, av_rawdata, avoptions):
"timeline" : timeline_rows,
}
-
availability_table.append(availability_entry)
availability_table.sort(cmp = cmp_av_entry)
@@ -910,6 +909,7 @@ def layout_availability_table(what, group_title, availability_table,
avoptions):
summary = {}
summary_counts = {}
+ unmonitored_objects = 0
av_table = {
"title" : group_title,
@@ -1035,9 +1035,14 @@ def layout_availability_table(what, group_title,
availability_table, avoptions):
else:
row["cells"].append(("", ""))
+ # If timeline == [] and states == {} then this objects has complete unmonitored
state
+ if entry["timeline"] == [] and entry["states"] == {}:
+ unmonitored_objects += 1
# Summary line. It has the same format as each entry in cells
- if show_summary and len(availability_table) > 0:
+ # We ignore unmonitored objects
+ len_availability_table = len(availability_table) - unmonitored_objects
+ if show_summary and len_availability_table > 0:
summary_cells = []
for sid, css, sname, help in availability_columns[what]:
@@ -1045,7 +1050,7 @@ def layout_availability_table(what, group_title, availability_table,
avoptions):
continue
number = summary.get(sid, 0)
if show_summary == "average" or
avoptions["timeformat"].startswith("percentage"):
- number /= len(availability_table)
+ number /= len_availability_table
if avoptions["timeformat"].startswith("percentage"):
number *= entry["considered_duration"]
if not number:
@@ -1061,7 +1066,7 @@ def layout_availability_table(what, group_title, availability_table,
avoptions):
if aggr == "cnt":
count = summary_counts.get(sid, 0)
if show_summary == "average":
- count = float(count) / len(availability_table)
+ count = float(count) / len_availability_table
text = "%.2f" % count
else:
text = str(count)