diff --git a/modules/monitoring/library/Monitoring/Backend/Ido/Query/HostgroupQuery.php b/modules/monitoring/library/Monitoring/Backend/Ido/Query/HostgroupQuery.php index 2704adb44..8b6b74435 100644 --- a/modules/monitoring/library/Monitoring/Backend/Ido/Query/HostgroupQuery.php +++ b/modules/monitoring/library/Monitoring/Backend/Ido/Query/HostgroupQuery.php @@ -29,6 +29,9 @@ class HostgroupQuery extends IdoQuery 'contacts' => [ 'host_contact' => 'hco.name1' ], + 'contactgroups' => [ + 'host_contactgroup' => 'hcgo.name1' + ], 'hostgroups' => array( 'hostgroup' => 'hgo.name1 COLLATE latin1_general_ci', 'hostgroup_alias' => 'hg.alias COLLATE latin1_general_ci', @@ -146,6 +149,24 @@ class HostgroupQuery extends IdoQuery ); } + /** + * Join contact groups + */ + protected function joinContactgroups() + { + $this->requireVirtualTable('hosts'); + + $this->select->joinLeft( + ['hcg' => 'icinga_host_contactgroups'], + 'hcg.host_id = h.host_id', + [] + )->joinLeft( + ['hcgo' => 'icinga_objects'], + 'hcgo.object_id = hcg.contactgroup_object_id AND hcgo.is_active = 1 AND hcgo.objecttype_id = 11', + [] + ); + } + /** * Join hosts */ diff --git a/modules/monitoring/library/Monitoring/Backend/Ido/Query/HoststatusQuery.php b/modules/monitoring/library/Monitoring/Backend/Ido/Query/HoststatusQuery.php index 47143ae46..998ea5d31 100644 --- a/modules/monitoring/library/Monitoring/Backend/Ido/Query/HoststatusQuery.php +++ b/modules/monitoring/library/Monitoring/Backend/Ido/Query/HoststatusQuery.php @@ -35,6 +35,9 @@ class HoststatusQuery extends IdoQuery 'contacts' => [ 'host_contact' => 'hco.name1' ], + 'contactgroups' => [ + 'host_contactgroup' => 'hcgo.name1' + ], 'hostgroups' => array( 'hostgroup' => 'hgo.name1 COLLATE latin1_general_ci', 'hostgroup_alias' => 'hg.alias COLLATE latin1_general_ci', @@ -220,6 +223,22 @@ class HoststatusQuery extends IdoQuery ); } + /** + * Join contact groups + */ + protected function joinContactgroups() + { + $this->select->joinLeft( + ['hcg' => 'icinga_host_contactgroups'], + 'hcg.host_id = h.host_id', + [] + )->joinLeft( + ['hcgo' => 'icinga_objects'], + 'hcgo.object_id = hcg.contactgroup_object_id AND hcgo.is_active = 1 AND hcgo.objecttype_id = 11', + [] + ); + } + /** * Join host groups */ diff --git a/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicegroupQuery.php b/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicegroupQuery.php index 20b16d3fb..bdf08fb38 100644 --- a/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicegroupQuery.php +++ b/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicegroupQuery.php @@ -25,9 +25,15 @@ class ServicegroupQuery extends IdoQuery 'contacts' => [ 'service_contact' => 'sco.name1' ], + 'contactgroups' => [ + 'service_contactgroup' => 'scgo.name1' + ], 'hostcontacts' => [ 'host_contact' => 'hco.name1' ], + 'hostcontactgroups' => [ + 'host_contactgroup' => 'hcgo.name1' + ], 'hostgroups' => array( 'hostgroup_name' => 'hgo.name1' ), @@ -120,6 +126,24 @@ class ServicegroupQuery extends IdoQuery ); } + /** + * Join contact groups + */ + protected function joinContactgroups() + { + $this->requireVirtualTable('services'); + + $this->select->joinLeft( + ['scg' => 'icinga_service_contactgroups'], + 'scg.service_id = s.service_id', + [] + )->joinLeft( + ['scgo' => 'icinga_objects'], + 'scgo.object_id = scg.contactgroup_object_id AND scgo.is_active = 1 AND scgo.objecttype_id = 10', + [] + ); + } + /** * Join host contacts */ @@ -142,6 +166,28 @@ class ServicegroupQuery extends IdoQuery ); } + /** + * Join host contact groups + */ + protected function joinHostcontactgroups() + { + $this->requireVirtualTable('services'); + + $this->select->joinLeft( + ['h' => 'icinga_hosts'], + 'h.host_object_id = s.host_object_id', + [] + )->joinLeft( + ['hcg' => 'icinga_host_contactgroups'], + 'hcg.host_id = h.host_id', + [] + )->joinLeft( + ['hcgo' => 'icinga_objects'], + 'hcgo.object_id = hcg.contactgroup_object_id AND hcgo.is_active = 1 AND hcgo.objecttype_id = 11', + [] + ); + } + /** * Join host groups */ @@ -173,7 +219,7 @@ class ServicegroupQuery extends IdoQuery $this->requireVirtualTable('services'); // Host custom var filters work w/o any host related table. If a host table join is necessary here some day, - // please adjust `joinHostcontacts()` where we explicitly do this already + // please adjust `joinHostcontact*()` where we explicitly do this already } /** diff --git a/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicestatusQuery.php b/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicestatusQuery.php index befd89784..966b346cf 100644 --- a/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicestatusQuery.php +++ b/modules/monitoring/library/Monitoring/Backend/Ido/Query/ServicestatusQuery.php @@ -38,9 +38,15 @@ class ServicestatusQuery extends IdoQuery 'contacts' => [ 'service_contact' => 'sco.name1' ], + 'contactgroups' => [ + 'service_contactgroup' => 'scgo.name1' + ], 'hostcontacts' => [ 'host_contact' => 'hco.name1' ], + 'hostcontactgroups' => [ + 'host_contactgroup' => 'hcgo.name1' + ], 'hostgroups' => array( 'hostgroup' => 'hgo.name1 COLLATE latin1_general_ci', 'hostgroup_alias' => 'hg.alias COLLATE latin1_general_ci', @@ -332,6 +338,22 @@ class ServicestatusQuery extends IdoQuery ); } + /** + * Join contact groups + */ + protected function joinContactgroups() + { + $this->select->joinLeft( + ['scg' => 'icinga_service_contactgroups'], + 'scg.service_id = s.service_id', + [] + )->joinLeft( + ['scgo' => 'icinga_objects'], + 'scgo.object_id = scg.contactgroup_object_id AND scgo.is_active = 1 AND scgo.objecttype_id = 10', + [] + ); + } + /** * Join host contacts */ @@ -350,6 +372,24 @@ class ServicestatusQuery extends IdoQuery ); } + /** + * Join host contact groups + */ + protected function joinHostcontactgroups() + { + $this->requireVirtualTable('hosts'); + + $this->select->joinLeft( + ['hcg' => 'icinga_host_contactgroups'], + 'hcg.host_id = h.host_id', + [] + )->joinLeft( + ['hcgo' => 'icinga_objects'], + 'hcgo.object_id = hcg.contactgroup_object_id AND hcgo.is_active = 1 AND hcgo.objecttype_id = 11', + [] + ); + } + /** * Join host groups */ diff --git a/modules/monitoring/library/Monitoring/DataView/Hostgroupsummary.php b/modules/monitoring/library/Monitoring/DataView/Hostgroupsummary.php index e3f69a95a..704aa74d4 100644 --- a/modules/monitoring/library/Monitoring/DataView/Hostgroupsummary.php +++ b/modules/monitoring/library/Monitoring/DataView/Hostgroupsummary.php @@ -58,7 +58,7 @@ class Hostgroupsummary extends DataView { return array( 'instance_name', - 'host', 'host_alias', 'host_contact', 'host_display_name', 'host_name', + 'host', 'host_alias', 'host_contact', 'host_contactgroup', 'host_display_name', 'host_name', 'hostgroup', 'service', 'service_description', 'service_display_name', 'servicegroup', 'servicegroup_alias', 'servicegroup_name' diff --git a/modules/monitoring/library/Monitoring/DataView/Hoststatus.php b/modules/monitoring/library/Monitoring/DataView/Hoststatus.php index faf63ed50..6440fe529 100644 --- a/modules/monitoring/library/Monitoring/DataView/Hoststatus.php +++ b/modules/monitoring/library/Monitoring/DataView/Hoststatus.php @@ -71,7 +71,7 @@ class HostStatus extends DataView public function getStaticFilterColumns() { return array( - 'host', 'host_contact', + 'host', 'host_contact', 'host_contactgroup', 'hostgroup', 'hostgroup_alias', 'hostgroup_name', 'service', 'service_description', 'service_display_name', 'servicegroup', 'servicegroup_alias', 'servicegroup_name' diff --git a/modules/monitoring/library/Monitoring/DataView/Servicegroupsummary.php b/modules/monitoring/library/Monitoring/DataView/Servicegroupsummary.php index 311acb5ad..fbcd81d20 100644 --- a/modules/monitoring/library/Monitoring/DataView/Servicegroupsummary.php +++ b/modules/monitoring/library/Monitoring/DataView/Servicegroupsummary.php @@ -52,9 +52,9 @@ class Servicegroupsummary extends DataView return array( 'instance_name', 'services_severity', - 'host', 'host_alias', 'host_contact', 'host_display_name', 'host_name', + 'host', 'host_alias', 'host_contact', 'host_contactgroup', 'host_display_name', 'host_name', 'hostgroup', 'hostgroup_alias', 'hostgroup_name', - 'service', 'service_contact', 'service_description', 'service_display_name', + 'service', 'service_contact', 'service_contactgroup', 'service_description', 'service_display_name', 'servicegroup' ); } diff --git a/modules/monitoring/library/Monitoring/DataView/Servicestatus.php b/modules/monitoring/library/Monitoring/DataView/Servicestatus.php index 23e20e137..e80c6f0c4 100644 --- a/modules/monitoring/library/Monitoring/DataView/Servicestatus.php +++ b/modules/monitoring/library/Monitoring/DataView/Servicestatus.php @@ -156,11 +156,13 @@ class ServiceStatus extends DataView return array( 'host', 'host_contact', + 'host_contactgroup', 'hostgroup', 'hostgroup_alias', 'hostgroup_name', 'service', 'service_contact', + 'service_contactgroup', 'service_host', 'servicegroup', 'servicegroup_alias',