icingaweb2-module-director/application/controllers/InspectController.php

131 lines
3.8 KiB
PHP

<?php
namespace Icinga\Module\Director\Controllers;
use Icinga\Module\Director\Web\Controller\ActionController;
class InspectController extends ActionController
{
protected function checkDirectorPermissions()
{
$this->assertPermission('director/inspect');
}
public function typesAction()
{
$api = $this->api();
$params = array('name' => $this->view->endpoint);
$this->getTabs()->add('modify', array(
'url' => 'director/endpoint',
'urlParams' => $params,
'label' => $this->translate('Endpoint')
))->add('render', array(
'url' => 'director/endpoint/render',
'urlParams' => $params,
'label' => $this->translate('Preview'),
))->add('history', array(
'url' => 'director/endpoint/history',
'urlParams' => $params,
'label' => $this->translate('History')
))->add('inspect', array(
'url' => $this->getRequest()->getUrl(),
'label' => $this->translate('Inspect')
))->activate('inspect');
$this->view->title = sprintf(
$this->translate('Icinga2 Objects: %s'),
$this->view->endpoint
);
$types = $api->getTypes();
$rootNodes = array();
foreach ($types as $name => $type) {
if (property_exists($type, 'base')) {
$base = $type->base;
if (! property_exists($types[$base], 'children')) {
$types[$base]->children = array();
}
$types[$base]->children[$name] = $type;
} else {
$rootNodes[$name] = $type;
}
}
$this->view->types = $rootNodes;
}
public function typeAction()
{
$typeName = $this->params->get('name');
$this->singleTab($this->translate('Inspect - object list'));
$this->view->title = sprintf(
$this->translate('Object type "%s"'),
$typeName
);
$this->view->type = $type = $this->api()->getType($typeName);
if ($type->abstract) {
return;
}
if (! empty($type->fields)) {
$this->view->objects = $this->api()->listObjects(
$typeName,
$type->plural_name
);
}
}
public function objectAction()
{
$this->singleTab($this->translate('Object Inspection'));
$this->view->object = $this->api()->getObject(
$this->params->get('name'),
$this->params->get('plural')
);
}
public function commandsAction()
{
$db = $this->db();
echo '<pre>';
foreach ($this->api()->setDb($db)->getCheckCommandObjects() as $object) {
if (! $object::exists($object->object_name, $db)) {
// var_dump($object->store());
echo $object;
}
}
echo '</pre>';
exit;
}
public function zonesAction()
{
$db = $this->db();
echo '<pre>';
foreach ($this->api()->setDb($db)->getZoneObjects() as $zone) {
if (! $zone::exists($zone->object_name, $db)) {
// var_dump($zone->store());
echo $zone;
}
}
echo '</pre>';
exit;
}
public function statusAction()
{
$this->view->status = $status = $this->api()->getStatus();
print_r($status);
exit;
}
protected function api($endpointName = null)
{
$this->view->endpoint = $this->params->get('endpoint');
if ($this->view->endpoint === null) {
$this->view->endpoint = $this->db()->getDeploymentEndpointName();
}
return parent::api($this->view->endpoint);
}
}