Module: check_mk
Branch: master
Commit: 9c54949314075a8025c35a03982feefe318e243f
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=9c54949314075a…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Apr 19 09:26:11 2016 +0200
3401 FIX Fix sorting and grouping hosts by their IPv4 address
---
.werks/3401 | 10 ++++++++++
ChangeLog | 1 +
web/plugins/views/sorters.py | 25 ++++++++++++++++++++++++-
3 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/.werks/3401 b/.werks/3401
new file mode 100644
index 0000000..8666cc2
--- /dev/null
+++ b/.werks/3401
@@ -0,0 +1,10 @@
+Title: Fix sorting and grouping hosts by their IPv4 address
+Level: 1
+Component: multisite
+Class: fix
+Compatible: compat
+State: unknown
+Version: 1.2.9i1
+Date: 1461050749
+
+
diff --git a/ChangeLog b/ChangeLog
index 1f92a08..6195bf1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -211,6 +211,7 @@
* 3118 FIX: Availability view now takes daylight saving time into account
* 3395 FIX: Fix performance issue when many BI aggregations are active...
* 3398 FIX: Fix exception in Matrix layout if it contains certain complex columns
+ * 3401 FIX: Fix sorting and grouping hosts by their IPv4 address
WATO:
* 3244 WATO BI Module: swap order of aggregation function and child node
selection...
diff --git a/web/plugins/views/sorters.py b/web/plugins/views/sorters.py
index c60b68c..e6daa25 100644
--- a/web/plugins/views/sorters.py
+++ b/web/plugins/views/sorters.py
@@ -224,7 +224,6 @@ multisite_sorters['svc_perf_val10'] = {
# Host
declare_1to1_sorter("alias", cmp_num_split)
declare_1to1_sorter("host_address", cmp_ip_address)
-declare_1to1_sorter("host_ipv4_address", cmp_ip_address)
declare_1to1_sorter("host_address_family", cmp_simple_number)
declare_1to1_sorter("host_plugin_output", cmp_simple_string)
declare_1to1_sorter("host_perf_data", cmp_simple_string)
@@ -257,6 +256,30 @@ declare_1to1_sorter("host_contacts",
cmp_string_list)
declare_1to1_sorter("host_contact_groups", cmp_string_list)
declare_1to1_sorter("host_servicelevel", cmp_simple_number)
+
+def cmp_host_ipv4_address(r1, r2):
+ def get_address(row):
+ custom_vars = dict(zip(row["host_custom_variable_names"],
+ row["host_custom_variable_values"]))
+ return custom_vars.get("ADDRESS_4", "")
+
+ def split_ip(ip):
+ try:
+ return tuple(int(part) for part in ip.split('.'))
+ except:
+ return ip
+
+ v1, v2 = split_ip(get_address(r1)), split_ip(get_address(r2))
+ return cmp(v1, v2)
+
+
+multisite_sorters["host_ipv4_address"] = {
+ "title" : _("Host IPv4 address"),
+ "cmp" : cmp_host_ipv4_address,
+ "columns" : [ "host_custom_variable_names",
"host_custom_variable_values"],
+}
+
+
def cmp_host_problems(r1, r2):
return cmp(r1["host_num_services"] - r1["host_num_services_ok"] -
r1["host_num_services_pending"],
r2["host_num_services"] - r2["host_num_services_ok"] -
r2["host_num_services_pending"])