2013-06-27 10:14:41 +02:00
|
|
|
<?php
|
2013-07-02 16:00:41 +02:00
|
|
|
// {{{ICINGA_LICENSE_HEADER}}}
|
2013-08-06 11:24:16 +02:00
|
|
|
/**
|
2013-10-23 15:10:33 +02:00
|
|
|
* This file is part of Icinga Web 2.
|
2013-08-06 11:24:16 +02:00
|
|
|
*
|
2013-10-23 15:10:33 +02:00
|
|
|
* Icinga Web 2 - Head for multiple monitoring backends.
|
2013-08-06 11:24:16 +02:00
|
|
|
* Copyright (C) 2013 Icinga Development Team
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
|
|
|
* of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*
|
2013-10-23 15:10:33 +02:00
|
|
|
* @copyright 2013 Icinga Development Team <info@icinga.org>
|
|
|
|
* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2
|
|
|
|
* @author Icinga Development Team <info@icinga.org>
|
|
|
|
*
|
2013-08-06 11:24:16 +02:00
|
|
|
*/
|
2013-07-02 16:00:41 +02:00
|
|
|
// {{{ICINGA_LICENSE_HEADER}}}
|
2013-06-27 10:14:41 +02:00
|
|
|
|
2013-08-21 00:50:15 +02:00
|
|
|
// @codingStandardsIgnoreStart
|
2014-02-18 20:04:54 +01:00
|
|
|
use Icinga\Application\Benchmark;
|
|
|
|
use Icinga\Web\Hook;
|
|
|
|
use Icinga\Web\Widget\Tabs;
|
|
|
|
use Icinga\Web\Widget\Tabextension\OutputFormat;
|
2013-10-15 19:56:33 +02:00
|
|
|
use Icinga\Web\Widget\Tabextension\DashboardAction;
|
2014-02-18 20:04:54 +01:00
|
|
|
use Icinga\Module\Monitoring\Backend;
|
|
|
|
use Icinga\Module\Monitoring\Controller;
|
2013-10-15 19:56:33 +02:00
|
|
|
use Icinga\Module\Monitoring\Object\AbstractObject;
|
2014-02-18 20:04:54 +01:00
|
|
|
use Icinga\Module\Monitoring\Object\Host;
|
|
|
|
use Icinga\Module\Monitoring\Object\Service;
|
2013-08-08 16:22:22 +02:00
|
|
|
|
2013-07-02 16:00:41 +02:00
|
|
|
/**
|
|
|
|
* Class Monitoring_ShowController
|
|
|
|
*
|
|
|
|
* Actions for show context
|
|
|
|
*/
|
2014-02-18 20:04:54 +01:00
|
|
|
class Monitoring_ShowController extends Controller
|
2013-06-27 10:14:41 +02:00
|
|
|
{
|
2013-07-02 16:00:41 +02:00
|
|
|
/**
|
|
|
|
* @var Backend
|
|
|
|
*/
|
2013-06-27 10:14:41 +02:00
|
|
|
protected $backend;
|
|
|
|
|
2013-07-02 16:00:41 +02:00
|
|
|
/**
|
|
|
|
* Initialize the controller
|
|
|
|
*/
|
2013-06-27 10:14:41 +02:00
|
|
|
public function init()
|
|
|
|
{
|
2013-10-17 19:48:46 +02:00
|
|
|
if ($this->getRequest()->getActionName() === 'host') {
|
2014-06-17 15:10:54 +02:00
|
|
|
$this->view->object = new Host($this->params);
|
2014-05-20 15:57:28 +02:00
|
|
|
} elseif ($this->getRequest()->getActionName() === 'service') {
|
2014-06-17 15:10:54 +02:00
|
|
|
$this->view->object = new Service($this->params);
|
2013-10-17 19:48:46 +02:00
|
|
|
} else {
|
2014-02-18 20:04:54 +01:00
|
|
|
// TODO: Well... this could be done better
|
2014-06-17 15:10:54 +02:00
|
|
|
$this->view->object = AbstractObject::fromParams($this->params);
|
2013-10-17 19:48:46 +02:00
|
|
|
}
|
2014-03-04 13:50:49 +01:00
|
|
|
if (Hook::has('ticket')) {
|
|
|
|
$this->view->tickets = Hook::first('ticket');
|
|
|
|
}
|
2013-10-17 19:48:46 +02:00
|
|
|
|
2013-08-08 16:22:22 +02:00
|
|
|
$this->createTabs();
|
2013-06-27 10:14:41 +02:00
|
|
|
}
|
|
|
|
|
2013-07-02 16:00:41 +02:00
|
|
|
/**
|
|
|
|
* Service overview
|
|
|
|
*/
|
2013-06-27 10:14:41 +02:00
|
|
|
public function serviceAction()
|
|
|
|
{
|
2014-03-04 13:33:02 +01:00
|
|
|
$this->setAutorefreshInterval(10);
|
|
|
|
$this->view->title = $this->view->object->service_description
|
|
|
|
. ' on ' . $this->view->object->host_name;
|
2014-02-18 20:04:54 +01:00
|
|
|
$this->getTabs()->activate('service');
|
2013-10-15 19:56:33 +02:00
|
|
|
$this->view->object->populate();
|
2013-06-27 10:14:41 +02:00
|
|
|
}
|
|
|
|
|
2013-07-02 16:00:41 +02:00
|
|
|
/**
|
|
|
|
* Host overview
|
|
|
|
*/
|
2013-06-27 10:14:41 +02:00
|
|
|
public function hostAction()
|
|
|
|
{
|
2014-03-04 13:33:02 +01:00
|
|
|
$this->setAutorefreshInterval(10);
|
2014-02-18 20:04:54 +01:00
|
|
|
$this->getTabs()->activate('host');
|
2014-03-04 13:33:02 +01:00
|
|
|
$this->view->title = $this->view->object->host_name;
|
2013-10-15 19:56:33 +02:00
|
|
|
$this->view->object->populate();
|
2013-06-27 10:14:41 +02:00
|
|
|
}
|
|
|
|
|
2013-10-10 11:54:51 +02:00
|
|
|
public function historyAction()
|
|
|
|
{
|
2014-02-18 20:04:54 +01:00
|
|
|
$this->getTabs()->activate('history');
|
2014-03-08 01:47:35 +01:00
|
|
|
//$this->view->object->populate();
|
2013-10-10 11:54:51 +02:00
|
|
|
$this->view->object->fetchEventHistory();
|
2014-03-07 10:07:54 +01:00
|
|
|
$this->handleFormatRequest($this->view->object->eventhistory);
|
2014-06-17 15:14:58 +02:00
|
|
|
$this->view->history = $this->view->object->eventhistory->paginate(50);
|
2013-10-10 11:54:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public function servicesAction()
|
|
|
|
{
|
2014-03-06 19:54:38 +01:00
|
|
|
$this->getTabs()->activate('services');
|
2014-03-08 01:47:35 +01:00
|
|
|
$this->_setParam('service', '');
|
|
|
|
// WTF???? UrlViewFilter is messing with $_SERVER['QUERY_STRING'], great!
|
|
|
|
$_SERVER['QUERY_STRING'] = preg_replace('~&service=[^&]+(?:&|$)~', '', $_SERVER['QUERY_STRING']);
|
2014-03-08 01:00:21 +01:00
|
|
|
$this->view->services = $this->view->action('services', 'list', 'monitoring', array(
|
|
|
|
'view' => 'compact',
|
|
|
|
'limit' => '',
|
|
|
|
'sort' => 'service_description',
|
2014-03-08 01:47:35 +01:00
|
|
|
'service' => ''
|
2014-03-08 01:00:21 +01:00
|
|
|
));
|
2013-10-10 11:54:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2013-07-02 16:00:41 +02:00
|
|
|
/**
|
|
|
|
* History entries for objects
|
|
|
|
*/
|
2013-10-10 11:54:51 +02:00
|
|
|
/* public function historyAction()
|
2013-06-27 10:14:41 +02:00
|
|
|
{
|
|
|
|
$this->view->history = $this->backend->select()
|
2013-07-02 16:00:41 +02:00
|
|
|
->from(
|
|
|
|
'eventHistory',
|
|
|
|
array(
|
|
|
|
'object_type',
|
|
|
|
'host_name',
|
|
|
|
'service_description',
|
|
|
|
'timestamp',
|
|
|
|
'state',
|
|
|
|
'attempt',
|
|
|
|
'max_attempts',
|
|
|
|
'output',
|
|
|
|
'type'
|
|
|
|
)
|
|
|
|
)->applyRequest($this->_request);
|
2013-06-27 10:14:41 +02:00
|
|
|
|
2013-07-02 16:00:41 +02:00
|
|
|
$this->view->preserve = $this->view->history->getAppliedFilter()->toParams();
|
|
|
|
if ($this->_getParam('dump') === 'sql') {
|
|
|
|
echo '<pre>' . htmlspecialchars($this->view->history->getQuery()->dump()) . '</pre>';
|
|
|
|
exit;
|
|
|
|
}
|
2013-06-27 10:14:41 +02:00
|
|
|
if ($this->_getParam('sort')) {
|
|
|
|
$this->view->preserve['sort'] = $this->_getParam('sort');
|
|
|
|
}
|
2013-07-12 15:55:31 +02:00
|
|
|
$this->view->preserve = $this->view->history->getAppliedFilter()->toParams();
|
2013-10-10 11:54:51 +02:00
|
|
|
}*/
|
2013-06-27 10:14:41 +02:00
|
|
|
|
2013-07-02 16:00:41 +02:00
|
|
|
/**
|
|
|
|
* Creating tabs for this controller
|
2013-09-24 12:48:30 +02:00
|
|
|
* @return Tabs
|
2013-07-02 16:00:41 +02:00
|
|
|
*/
|
2013-06-27 10:14:41 +02:00
|
|
|
protected function createTabs()
|
|
|
|
{
|
2014-04-09 08:44:51 +02:00
|
|
|
if (($object = $this->view->object) === null) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2013-08-08 16:22:22 +02:00
|
|
|
$tabs = $this->getTabs();
|
2013-06-27 10:14:41 +02:00
|
|
|
$params = array(
|
2013-10-10 11:54:51 +02:00
|
|
|
'host' => $object->host_name,
|
2013-06-27 10:14:41 +02:00
|
|
|
);
|
2013-07-12 14:33:17 +02:00
|
|
|
if ($object instanceof Service) {
|
|
|
|
$params['service'] = $object->service_description;
|
|
|
|
} elseif ($service = $this->_getParam('service')) {
|
|
|
|
$params['service'] = $service;
|
2013-06-27 10:14:41 +02:00
|
|
|
}
|
2014-03-08 01:00:21 +01:00
|
|
|
$tabs->add(
|
|
|
|
'host',
|
|
|
|
array(
|
|
|
|
'title' => 'Host',
|
|
|
|
'icon' => 'img/icons/host.png',
|
|
|
|
'url' => 'monitoring/show/host',
|
|
|
|
'urlParams' => $params,
|
|
|
|
)
|
|
|
|
);
|
2013-10-10 11:54:51 +02:00
|
|
|
if (isset($params['service'])) {
|
|
|
|
$tabs->add(
|
|
|
|
'service',
|
|
|
|
array(
|
|
|
|
'title' => 'Service',
|
2014-02-18 20:04:54 +01:00
|
|
|
'icon' => 'img/icons/service.png',
|
2013-10-10 11:54:51 +02:00
|
|
|
'url' => 'monitoring/show/service',
|
|
|
|
'urlParams' => $params,
|
|
|
|
)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
$tabs->add(
|
|
|
|
'services',
|
|
|
|
array(
|
|
|
|
'title' => 'Services',
|
2014-02-18 20:04:54 +01:00
|
|
|
'icon' => 'img/icons/service.png',
|
2013-10-10 11:54:51 +02:00
|
|
|
'url' => 'monitoring/show/services',
|
2014-03-08 01:47:35 +01:00
|
|
|
'urlParams' => $params,
|
2013-10-10 11:54:51 +02:00
|
|
|
)
|
|
|
|
);
|
|
|
|
$tabs->add(
|
|
|
|
'history',
|
|
|
|
array(
|
|
|
|
'title' => 'History',
|
2014-02-18 20:04:54 +01:00
|
|
|
'icon' => 'img/icons/history.png',
|
2013-10-10 11:54:51 +02:00
|
|
|
'url' => 'monitoring/show/history',
|
|
|
|
'urlParams' => $params,
|
|
|
|
)
|
|
|
|
);
|
2013-08-08 16:22:22 +02:00
|
|
|
$tabs->extend(new OutputFormat())
|
2014-02-18 20:04:54 +01:00
|
|
|
->extend(new DashboardAction());
|
2013-06-27 10:14:41 +02:00
|
|
|
}
|
|
|
|
}
|
2013-08-07 10:27:50 +02:00
|
|
|
// @codingStandardsIgnoreEnd
|