IcingaObjectGroup: provide groups for assign rules

This commit is contained in:
Thomas Gelf 2016-10-24 21:55:02 +00:00
parent b3eb5ea102
commit 6e83a4fd5b
2 changed files with 33 additions and 0 deletions

View File

@ -139,6 +139,8 @@ class IcingaHost extends IcingaObject
$properties[$props] = $hostProperties;
}
$properties['groups'] = 'Groups';
if (!empty($hostVars)) {
$properties[$vars] = $hostVars;
}

View File

@ -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);
}
}