* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2 * @author Icinga Development Team */ // {{{ICINGA_LICENSE_HEADER}}} // @codingStandardsIgnoreStart use \Icinga\Module\Monitoring\Backend; use Icinga\Module\Monitoring\Controller as MonitoringController; use \Icinga\Web\Hook; use \Icinga\Module\Monitoring\Object\Host; use \Icinga\Module\Monitoring\Object\Service; use \Icinga\Application\Benchmark; use \Icinga\Web\Widget\Tabextension\OutputFormat; use \Icinga\Web\Widget\Tabextension\DashboardAction; use \Icinga\Web\Widget\Tabextension\BasketAction; use \Icinga\Web\Widget\Tabs; /** * Class Monitoring_ShowController * * Actions for show context */ class Monitoring_ShowController extends MonitoringController { /** * @var Backend */ protected $backend; /** * Initialize the controller */ public function init() { $host = $this->_getParam('host'); $service = $this->_getParam('service'); $this->backend = Backend::createBackend($this->_getParam('backend')); $object = null; // TODO: Do not allow wildcards in names! if ($host !== null) { // TODO: $this->assertPermission('host/read', $host); if ($this->getRequest()->getActionName() !== 'host' && $service !== null && $service !== '*') { // TODO: $this->assertPermission('service/read', $service); $object = Service::fetch($this->backend, $host, $service); } else { $object = Host::fetch($this->backend, $host); } } $this->view->compact = $this->_getParam('view') === 'compact'; if ($object === null) { // TODO: Notification, not found $this->redirectNow('monitoring/list/services'); return; } $this->view->object = $object; $this->createTabs(); } /** * Service overview */ public function serviceAction() { $this->view->object->prefetch(); $this->view->preserve = array(); } /** * Host overview */ public function hostAction() { $this->view->object->prefetch(); $this->view->preserve = array(); } public function historyAction() { $this->view->object->fetchEventHistory(); $this->view->history = $this->view->object->eventHistory->limit(10)->paginate(); } public function servicesAction() { $params = $this->_request->getParams(); unset($params['service']); $this->view->services = $this->fetchServices($params); } /** * History entries for objects */ /* public function historyAction() { $this->view->history = $this->backend->select() ->from( 'eventHistory', array( 'object_type', 'host_name', 'service_description', 'timestamp', 'state', 'attempt', 'max_attempts', 'output', 'type' ) )->applyRequest($this->_request); $this->view->preserve = $this->view->history->getAppliedFilter()->toParams(); if ($this->_getParam('dump') === 'sql') { echo '
' . htmlspecialchars($this->view->history->getQuery()->dump()) . '
'; exit; } if ($this->_getParam('sort')) { $this->view->preserve['sort'] = $this->_getParam('sort'); } $this->view->preserve = $this->view->history->getAppliedFilter()->toParams(); }*/ /** * Creating tabs for this controller * @return Tabs */ protected function createTabs() { $object = $this->view->object; $tabs = $this->getTabs(); $params = array( 'host' => $object->host_name, ); if ($object instanceof Service) { $params['service'] = $object->service_description; } elseif ($service = $this->_getParam('service')) { $params['service'] = $service; } if (isset($params['service'])) { $tabs->add( 'service', array( 'title' => 'Service', 'iconCls' => 'icinga-icon-service', 'url' => 'monitoring/show/service', 'urlParams' => $params, 'tagParams' => array( 'data-icinga-target' => 'detail' ) ) ); } $tabs->add( 'host', array( 'title' => 'Host', 'iconCls' => 'icinga-icon-host', 'url' => 'monitoring/show/host', 'urlParams' => $params, 'tagParams' => array( 'data-icinga-target' => 'detail' ) ) ); $tabs->add( 'services', array( 'title' => 'Services', 'iconCls' => 'icinga-icon-service', 'url' => 'monitoring/show/services', 'urlParams' => $params, 'tagParams' => array( 'data-icinga-target' => 'detail' ) ) ); $tabs->add( 'history', array( 'title' => 'History', 'iconCls' => 'icinga-icon-history', 'url' => 'monitoring/show/history', 'urlParams' => $params, 'tagParams' => array( 'data-icinga-target' => 'detail' ) ) ); $tabs->extend(new OutputFormat()) ->extend(new DashboardAction()); } } // @codingStandardsIgnoreEnd