diff --git a/library/Director/Db.php b/library/Director/Db.php index 703d6e43..bec0de3e 100644 --- a/library/Director/Db.php +++ b/library/Director/Db.php @@ -632,6 +632,25 @@ class Db extends DbConnection return $this->db()->fetchAll($select); } + public function fetchDistinctServiceVars() + { + $select = $this->db()->select()->distinct()->from( + array('sv' => 'icinga_service_var'), + array( + 'varname' => 'sv.varname', + 'format' => 'sv.format', + 'caption' => 'df.caption', + 'datatype' => 'df.datatype' + ) + )->joinLeft( + array('df' => 'director_datafield'), + 'df.varname = sv.varname', + array() + )->order('varname'); + + return $this->db()->fetchAll($select); + } + public function dbHexFunc($column) { if ($this->isPgsql()) { diff --git a/library/Director/Objects/IcingaService.php b/library/Director/Objects/IcingaService.php index 9e6a90f4..7564f4b6 100644 --- a/library/Director/Objects/IcingaService.php +++ b/library/Director/Objects/IcingaService.php @@ -435,7 +435,7 @@ class IcingaService extends IcingaObject $serviceVars = array(); if ($connection !== null) { - foreach ($connection->fetchDistinctHostVars() as $var) { + foreach ($connection->fetchDistinctServiceVars() as $var) { if ($filter->match(PropertiesFilter::$CUSTOM_PROPERTY, $var->varname, $var)) { if ($var->datatype) { $serviceVars[$prefix . 'vars.' . $var->varname] = sprintf(