ImportSourceCoreApi: initial implementation
This commit is contained in:
parent
49079466f0
commit
5a5f2faa77
|
@ -0,0 +1,55 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Icinga\Module\Director\Import;
|
||||||
|
|
||||||
|
use Icinga\Application\Config;
|
||||||
|
use Icinga\Module\Director\Core\CoreApi;
|
||||||
|
use Icinga\Module\Director\Core\RestApiClient;
|
||||||
|
use Icinga\Module\Director\Util;
|
||||||
|
use Icinga\Module\Director\Web\Form\QuickForm;
|
||||||
|
use Icinga\Module\Director\Web\Hook\ImportSourceHook;
|
||||||
|
|
||||||
|
class ImportSourceCoreApi extends ImportSourceHook
|
||||||
|
{
|
||||||
|
protected $connection;
|
||||||
|
|
||||||
|
public function fetchData()
|
||||||
|
{
|
||||||
|
$func = 'get' . $this->getSetting('object_type') . 'Objects';
|
||||||
|
$objects = $this->api()->$func();
|
||||||
|
$result = array();
|
||||||
|
foreach ($objects as $object) {
|
||||||
|
$result[] = $object->toPlainObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function listColumns()
|
||||||
|
{
|
||||||
|
$res = $this->fetchData();
|
||||||
|
return array_keys((array) $res[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function addSettingsFormFields(QuickForm $form)
|
||||||
|
{
|
||||||
|
$form->addElement('select', 'object_type', array(
|
||||||
|
'label' => 'Object type',
|
||||||
|
'required' => true,
|
||||||
|
'multiOptions' => $form->optionalEnum(array(
|
||||||
|
'CheckCommand' => 'Commands',
|
||||||
|
'Endpoint' => 'Endpoints',
|
||||||
|
'Zone' => 'Zones',
|
||||||
|
))
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function api()
|
||||||
|
{
|
||||||
|
$apiconfig = Config::module('director')->getSection('api');
|
||||||
|
$client = new RestApiClient($apiconfig->get('address'), $apiconfig->get('port'));
|
||||||
|
$client->setCredentials($apiconfig->get('username'), $apiconfig->get('password'));
|
||||||
|
$api = new CoreApi($client);
|
||||||
|
return $api;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue