From 3cd947ab2905c50165845748bf5e8b0d79d39cbf Mon Sep 17 00:00:00 2001
From: Thomas Gelf <thomas.gelf@netways.de>
Date: Tue, 20 Aug 2013 23:34:00 +0200
Subject: [PATCH] A bunch of aggregating columns are interesting once joined
 with services

---
 .../Backend/Ido/Query/HoststatusQuery.php     | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/modules/monitoring/library/Monitoring/Backend/Ido/Query/HoststatusQuery.php b/modules/monitoring/library/Monitoring/Backend/Ido/Query/HoststatusQuery.php
index b6c3679d4..95a6623dc 100644
--- a/modules/monitoring/library/Monitoring/Backend/Ido/Query/HoststatusQuery.php
+++ b/modules/monitoring/library/Monitoring/Backend/Ido/Query/HoststatusQuery.php
@@ -77,6 +77,30 @@ class HoststatusQuery extends AbstractQuery
         'hostgroups' => array(
             'hostgroup' => 'hgo.name1 COLLATE latin1_general_ci',
         ),
+        'services' => array(
+            'services_cnt'      => 'SUM(1)',
+            'services_ok'       => 'SUM(CASE WHEN ss.current_state = 0 THEN 1 ELSE 0 END)',
+            'services_warning'  => 'SUM(CASE WHEN ss.current_state = 1 THEN 1 ELSE 0 END)',
+            'services_critical' => 'SUM(CASE WHEN ss.current_state = 2 THEN 1 ELSE 0 END)',
+            'services_unknown'  => 'SUM(CASE WHEN ss.current_state = 3 THEN 1 ELSE 0 END)',
+            'services_pending'  => 'SUM(CASE WHEN ss.has_been_checked = 0 OR ss.has_been_checked IS NULL THEN 1 ELSE 0 END)',
+            'services_problem'  => 'SUM(CASE WHEN ss.current_state > 0 THEN 1 ELSE 0 END)',
+            'services_problem_handled'  => 'SUM(CASE WHEN ss.current_state > 0 AND (ss.problem_has_been_acknowledged = 1 OR ss.scheduled_downtime_depth > 0) THEN 1 ELSE 0 END)',
+            'services_problem_unhandled'  => 'SUM(CASE WHEN ss.current_state > 0 AND (ss.problem_has_been_acknowledged = 0 AND ss.scheduled_downtime_depth = 0) THEN 1 ELSE 0 END)',
+            'services_warning_handled'  => 'SUM(CASE WHEN ss.current_state = 1 AND (ss.problem_has_been_acknowledged = 1 OR ss.scheduled_downtime_depth > 0) THEN 1 ELSE 0 END)',
+            'services_critical_handled' => 'SUM(CASE WHEN ss.current_state = 2 AND (ss.problem_has_been_acknowledged = 1 OR ss.scheduled_downtime_depth > 0) THEN 1 ELSE 0 END)',
+            'services_unknown_handled'  => 'SUM(CASE WHEN ss.current_state = 3 AND (ss.problem_has_been_acknowledged = 1 OR ss.scheduled_downtime_depth > 0) THEN 1 ELSE 0 END)',
+            'services_warning_unhandled'  => 'SUM(CASE WHEN ss.current_state = 1 AND (ss.problem_has_been_acknowledged = 0 AND ss.scheduled_downtime_depth = 0) THEN 1 ELSE 0 END)',
+            'services_critical_unhandled' => 'SUM(CASE WHEN ss.current_state = 2 AND (ss.problem_has_been_acknowledged = 0 AND ss.scheduled_downtime_depth = 0) THEN 1 ELSE 0 END)',
+            'services_unknown_unhandled'  => 'SUM(CASE WHEN ss.current_state = 3 AND (ss.problem_has_been_acknowledged = 0 AND ss.scheduled_downtime_depth = 0) THEN 1 ELSE 0 END)',
+        ),
+    );
+
+    protected $aggregateColumnIdx = array(
+        'services_cnt'               => true,
+        'services_problem'           => true,
+        'services_problem_handled'   => true,
+        'services_problem_unhandled' => true,
     );
 
     protected function getDefaultColumns()