IcingaService: enum service vars, not host vars

fixes #13359
This commit is contained in:
Thomas Gelf 2016-11-30 09:33:29 +01:00
parent 2ce84baa70
commit 7dd2ac6b83
2 changed files with 20 additions and 1 deletions

View File

@ -632,6 +632,25 @@ class Db extends DbConnection
return $this->db()->fetchAll($select); 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) public function dbHexFunc($column)
{ {
if ($this->isPgsql()) { if ($this->isPgsql()) {

View File

@ -435,7 +435,7 @@ class IcingaService extends IcingaObject
$serviceVars = array(); $serviceVars = array();
if ($connection !== null) { if ($connection !== null) {
foreach ($connection->fetchDistinctHostVars() as $var) { foreach ($connection->fetchDistinctServiceVars() as $var) {
if ($filter->match(PropertiesFilter::$CUSTOM_PROPERTY, $var->varname, $var)) { if ($filter->match(PropertiesFilter::$CUSTOM_PROPERTY, $var->varname, $var)) {
if ($var->datatype) { if ($var->datatype) {
$serviceVars[$prefix . 'vars.' . $var->varname] = sprintf( $serviceVars[$prefix . 'vars.' . $var->varname] = sprintf(