ImportSourceLdap: new import source

This commit is contained in:
Thomas Gelf 2015-08-28 17:16:58 +02:00
parent 3f176de03a
commit cdfac373fb
2 changed files with 80 additions and 0 deletions

View File

@ -0,0 +1,79 @@
<?php
namespace Icinga\Module\Director\Import;
use Icinga\Module\Director\Util;
use Icinga\Module\Director\Web\Form\QuickForm;
use Icinga\Module\Director\Web\Hook\ImportSourceHook;
use Icinga\Data\ResourceFactory;
use Icinga\Web\Form;
class ImportSourceLdap extends ImportSourceHook
{
protected $connection;
public function fetchData()
{
$columns = array(
'objectclass',
'cn',
'snbhostname',
'environment',
'puppetclass', // multi
'puppetvar', // multi
'SNBhostcontactteam',
'SNBhostlocshort',
'SNBmonprio',
'SNBappl',
'SNBosversion',
'SNBossubversion',
'snbmachmaint',
'snbstate',
'snbmaintperiod', // multi
);
$query = $this->connection()->select()->from($this->settings['objectclass'], $this->listColumns());
if ($base = $this->settings['base']) {
$query->setBase($base);
}
if ($filter = $this->settings['base']) {
$query->setBase($base);
}
return $query->fetchAll();
}
public function listColumns()
{
return preg_split('/,\s*/', $this->settings['query'], -1, PREG_SPLIT_NO_EMPTY);
}
public static function addSettingsFormFields(QuickForm $form)
{
Util::addLDAPResourceFormElement($form, 'resource');
$form->addElement('text', 'base', array(
'label' => 'LDAP Search Base',
));
$form->addElement('text', 'objectclass', array(
'label' => 'Object class',
));
$form->addElement('text', 'filter', array(
'label' => 'LDAP filter',
));
$form->addElement('textarea', 'query', array(
'label' => 'Properties',
//'required' => true,
'rows' => 5,
));
return $form;
}
protected function connection()
{
if ($this->connection === null) {
$this->connection = ResourceFactory::create($this->settings['resource']);
}
return $this->connection;
}
}

View File

@ -2,6 +2,7 @@
$this->registerHook('Monitoring\\HostActions', '\\Icinga\\Module\\Director\\Web\\HostActions'); $this->registerHook('Monitoring\\HostActions', '\\Icinga\\Module\\Director\\Web\\HostActions');
$this->registerHook('Director\\ImportSource', '\\Icinga\\Module\\Director\\Import\\ImportSourceSql', 'sql'); $this->registerHook('Director\\ImportSource', '\\Icinga\\Module\\Director\\Import\\ImportSourceSql', 'sql');
$this->registerHook('Director\\ImportSource', '\\Icinga\\Module\\Director\\Import\\ImportSourceLdap', 'ldap');
$this->registerHook('Director\\DataType', '\\Icinga\\Module\\Director\\DataType\\DataTypeString', 'string'); $this->registerHook('Director\\DataType', '\\Icinga\\Module\\Director\\DataType\\DataTypeString', 'string');
$this->registerHook('Director\\DataType', '\\Icinga\\Module\\Director\\DataType\\DataTypeNumber', 'number'); $this->registerHook('Director\\DataType', '\\Icinga\\Module\\Director\\DataType\\DataTypeNumber', 'number');