IcingaObjectGroup: provide groups for assign rules
This commit is contained in:
parent
b3eb5ea102
commit
6e83a4fd5b
|
@ -139,6 +139,8 @@ class IcingaHost extends IcingaObject
|
|||
$properties[$props] = $hostProperties;
|
||||
}
|
||||
|
||||
$properties['groups'] = 'Groups';
|
||||
|
||||
if (!empty($hostVars)) {
|
||||
$properties[$vars] = $hostVars;
|
||||
}
|
||||
|
|
|
@ -2,6 +2,9 @@
|
|||
|
||||
namespace Icinga\Module\Director\Objects;
|
||||
|
||||
use Icinga\Application\Config;
|
||||
use Icinga\Exception\IcingaException;
|
||||
use Icinga\Module\Director\Db;
|
||||
use Icinga\Module\Director\IcingaConfig\IcingaConfig;
|
||||
|
||||
abstract class IcingaObjectGroup extends IcingaObject
|
||||
|
@ -21,4 +24,32 @@ abstract class IcingaObjectGroup extends IcingaObject
|
|||
{
|
||||
return $this->connection->getDefaultGlobalZoneName();
|
||||
}
|
||||
|
||||
public static function enumForType($type, Db $connection = null)
|
||||
{
|
||||
if ($connection === null) {
|
||||
// TODO: not nice :(
|
||||
$connection = Db::fromResourceName(
|
||||
Config::module('director')->get('db', 'resource')
|
||||
);
|
||||
}
|
||||
|
||||
// Last resort defense against potentiall lousy checks:
|
||||
if (! ctype_alpha($type)) {
|
||||
throw new IcingaException(
|
||||
'Holy shit, you should never have reached this'
|
||||
);
|
||||
}
|
||||
|
||||
$db = $connection->getDbAdapter();
|
||||
$select = $db->select()->from(
|
||||
'icinga_' . $type . 'group',
|
||||
array(
|
||||
'name' => 'object_name',
|
||||
'display' => 'COALESCE(display_name, object_name)'
|
||||
)
|
||||
)->where('object_type = ?', 'object')->order('display');
|
||||
|
||||
return $db->fetchPairs($select);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue