mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-07-25 23:04:51 +02:00
commit
cc80440aea
@ -112,10 +112,12 @@ class ActionController extends Zend_Controller_Action
|
|||||||
$url = substr($url, strlen($this->getRequest()->getBaseUrl()));
|
$url = substr($url, strlen($this->getRequest()->getBaseUrl()));
|
||||||
// the host is mandatory, but ignored in Zend
|
// the host is mandatory, but ignored in Zend
|
||||||
$req = new Request('http://ignoredhost/' . $url);
|
$req = new Request('http://ignoredhost/' . $url);
|
||||||
|
$req->setBaseUrl($this->getRequest()->getBaseUrl());
|
||||||
$router = Zend_Controller_Front::getInstance()->getRouter();
|
$router = Zend_Controller_Front::getInstance()->getRouter();
|
||||||
$router->route($req);
|
$router->route($req);
|
||||||
|
Zend_Controller_Front::getInstance()->setRequest($req);
|
||||||
$detailHtml = $this->view->action($req->getActionName(), $req->getControllerName(), $req->getModuleName());
|
$detailHtml = $this->view->action($req->getActionName(), $req->getControllerName(), $req->getModuleName());
|
||||||
|
Zend_Controller_Front::getInstance()->setRequest($this->getRequest());
|
||||||
$this->_helper->layout->assign('detailContent', $detailHtml);
|
$this->_helper->layout->assign('detailContent', $detailHtml);
|
||||||
$this->_helper->layout->assign('detailClass', 'col-sm-12 col-xs-12 col-md-12 col-lg-6');
|
$this->_helper->layout->assign('detailClass', 'col-sm-12 col-xs-12 col-md-12 col-lg-6');
|
||||||
$this->_helper->layout->assign('mainClass', 'col-sm-12 col-xs-12 col-md-12 col-lg-6');
|
$this->_helper->layout->assign('mainClass', 'col-sm-12 col-xs-12 col-md-12 col-lg-6');
|
||||||
|
@ -96,6 +96,13 @@ class Tab implements Widget
|
|||||||
*/
|
*/
|
||||||
private $iconCls = null;
|
private $iconCls = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Additional a tag attributes
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $tagParams;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets an icon image for this tab
|
* Sets an icon image for this tab
|
||||||
*
|
*
|
||||||
@ -166,6 +173,16 @@ class Tab implements Widget
|
|||||||
$this->urlParams = $urlParams;
|
$this->urlParams = $urlParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set additional a tag attributes
|
||||||
|
*
|
||||||
|
* @param array $tagParams
|
||||||
|
*/
|
||||||
|
public function setTagParams(array $tagParams)
|
||||||
|
{
|
||||||
|
$this->tagParams = $tagParams;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new Tab with the given properties
|
* Create a new Tab with the given properties
|
||||||
*
|
*
|
||||||
@ -215,7 +232,13 @@ class Tab implements Widget
|
|||||||
}
|
}
|
||||||
if ($this->url !== null) {
|
if ($this->url !== null) {
|
||||||
$this->url->overwriteParams($this->urlParams);
|
$this->url->overwriteParams($this->urlParams);
|
||||||
$tab = '<a href="' . $this->url->getAbsoluteUrl() . '">' . $caption . '</a>';
|
$tagParams = '';
|
||||||
|
if ($this->tagParams !== null) {
|
||||||
|
foreach ($this->tagParams as $key => $value) {
|
||||||
|
$tagParams .= ' ' . $key . '="' . $value . '"';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$tab = '<a' . $tagParams .' href="' . $this->url->getAbsoluteUrl() . '">' . $caption . '</a>';
|
||||||
} else {
|
} else {
|
||||||
$tab = $caption;
|
$tab = $caption;
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
use \Icinga\Application\Benchmark;
|
use \Icinga\Application\Benchmark;
|
||||||
use \Icinga\Data\Db\Query;
|
use \Icinga\Data\Db\Query;
|
||||||
use \Icinga\File\Csv;
|
use \Icinga\File\Csv;
|
||||||
use \Icinga\Web\Controller\ActionController;
|
use \Icinga\Module\Monitoring\Controller as MonitoringController;
|
||||||
use \Icinga\Web\Hook;
|
use \Icinga\Web\Hook;
|
||||||
use \Icinga\Web\Widget\Tabextension\DashboardAction;
|
use \Icinga\Web\Widget\Tabextension\DashboardAction;
|
||||||
use \Icinga\Web\Widget\Tabextension\OutputFormat;
|
use \Icinga\Web\Widget\Tabextension\OutputFormat;
|
||||||
@ -47,7 +47,7 @@ use Icinga\Module\Monitoring\DataView\Contactgroup as ContactgroupView;
|
|||||||
use Icinga\Module\Monitoring\DataView\HostAndServiceStatus as HostAndServiceStatusView;
|
use Icinga\Module\Monitoring\DataView\HostAndServiceStatus as HostAndServiceStatusView;
|
||||||
use Icinga\Module\Monitoring\DataView\Comment as CommentView;
|
use Icinga\Module\Monitoring\DataView\Comment as CommentView;
|
||||||
|
|
||||||
class Monitoring_ListController extends ActionController
|
class Monitoring_ListController extends MonitoringController
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* The backend used for this controller
|
* The backend used for this controller
|
||||||
@ -137,39 +137,7 @@ class Monitoring_ListController extends ActionController
|
|||||||
public function servicesAction()
|
public function servicesAction()
|
||||||
{
|
{
|
||||||
$this->compactView = 'services-compact';
|
$this->compactView = 'services-compact';
|
||||||
$query = HostAndServiceStatusView::fromRequest(
|
$this->view->services = $this->fetchServices();
|
||||||
$this->_request,
|
|
||||||
array(
|
|
||||||
'host_name',
|
|
||||||
'host_state',
|
|
||||||
'host_state_type',
|
|
||||||
'host_last_state_change',
|
|
||||||
'host_address',
|
|
||||||
'host_handled',
|
|
||||||
'service_description',
|
|
||||||
'service_display_name',
|
|
||||||
'service_state' => 'service_state',
|
|
||||||
'service_in_downtime',
|
|
||||||
'service_acknowledged',
|
|
||||||
'service_handled',
|
|
||||||
'service_output',
|
|
||||||
'service_last_state_change' => 'service_last_state_change',
|
|
||||||
'service_icon_image',
|
|
||||||
'service_long_output',
|
|
||||||
'service_is_flapping',
|
|
||||||
'service_state_type',
|
|
||||||
'service_handled',
|
|
||||||
'service_severity',
|
|
||||||
'service_last_check',
|
|
||||||
'service_notifications_enabled',
|
|
||||||
'service_action_url',
|
|
||||||
'service_notes_url',
|
|
||||||
'service_last_comment',
|
|
||||||
'service_active_checks_enabled',
|
|
||||||
'service_passive_checks_enabled'
|
|
||||||
)
|
|
||||||
)->getQuery();
|
|
||||||
$this->view->services = $query->paginate();
|
|
||||||
$this->setupSortControl(array(
|
$this->setupSortControl(array(
|
||||||
'service_last_check' => 'Last Service Check',
|
'service_last_check' => 'Last Service Check',
|
||||||
'service_severity' => 'Severity',
|
'service_severity' => 'Severity',
|
||||||
@ -182,7 +150,6 @@ class Monitoring_ListController extends ActionController
|
|||||||
'host_address' => 'Host Address',
|
'host_address' => 'Host Address',
|
||||||
'host_last_check' => 'Last Host Check'
|
'host_last_check' => 'Last Host Check'
|
||||||
));
|
));
|
||||||
$this->handleFormatRequest($query);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
// @codingStandardsIgnoreStart
|
// @codingStandardsIgnoreStart
|
||||||
use \Icinga\Module\Monitoring\Backend;
|
use \Icinga\Module\Monitoring\Backend;
|
||||||
use \Icinga\Web\Controller\ActionController;
|
use Icinga\Module\Monitoring\Controller as MonitoringController;
|
||||||
use \Icinga\Web\Hook;
|
use \Icinga\Web\Hook;
|
||||||
use \Icinga\Module\Monitoring\Object\Host;
|
use \Icinga\Module\Monitoring\Object\Host;
|
||||||
use \Icinga\Module\Monitoring\Object\Service;
|
use \Icinga\Module\Monitoring\Object\Service;
|
||||||
@ -43,7 +43,7 @@ use \Icinga\Web\Widget\Tabs;
|
|||||||
*
|
*
|
||||||
* Actions for show context
|
* Actions for show context
|
||||||
*/
|
*/
|
||||||
class Monitoring_ShowController extends ActionController
|
class Monitoring_ShowController extends MonitoringController
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var Backend
|
* @var Backend
|
||||||
@ -86,7 +86,6 @@ class Monitoring_ShowController extends ActionController
|
|||||||
public function serviceAction()
|
public function serviceAction()
|
||||||
{
|
{
|
||||||
$this->view->object->prefetch();
|
$this->view->object->prefetch();
|
||||||
$this->view->object->eventHistory = $this->view->object->eventHistory->limit(10)->fetchAll();
|
|
||||||
$this->view->preserve = array();
|
$this->view->preserve = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,14 +95,27 @@ class Monitoring_ShowController extends ActionController
|
|||||||
public function hostAction()
|
public function hostAction()
|
||||||
{
|
{
|
||||||
$this->view->object->prefetch();
|
$this->view->object->prefetch();
|
||||||
$this->view->object->eventHistory = $this->view->object->eventHistory->limit(10)->fetchAll();
|
|
||||||
$this->view->preserve = array();
|
$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
|
* History entries for objects
|
||||||
*/
|
*/
|
||||||
public function historyAction()
|
/* public function historyAction()
|
||||||
{
|
{
|
||||||
$this->view->history = $this->backend->select()
|
$this->view->history = $this->backend->select()
|
||||||
->from(
|
->from(
|
||||||
@ -130,7 +142,7 @@ class Monitoring_ShowController extends ActionController
|
|||||||
$this->view->preserve['sort'] = $this->_getParam('sort');
|
$this->view->preserve['sort'] = $this->_getParam('sort');
|
||||||
}
|
}
|
||||||
$this->view->preserve = $this->view->history->getAppliedFilter()->toParams();
|
$this->view->preserve = $this->view->history->getAppliedFilter()->toParams();
|
||||||
}
|
}*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creating tabs for this controller
|
* Creating tabs for this controller
|
||||||
@ -140,26 +152,66 @@ class Monitoring_ShowController extends ActionController
|
|||||||
{
|
{
|
||||||
$object = $this->view->object;
|
$object = $this->view->object;
|
||||||
$tabs = $this->getTabs();
|
$tabs = $this->getTabs();
|
||||||
if (!$this->view->host) {
|
|
||||||
return $tabs;
|
|
||||||
}
|
|
||||||
$params = array(
|
$params = array(
|
||||||
'host' => $this->view->host->host_name,
|
'host' => $object->host_name,
|
||||||
);
|
);
|
||||||
if ($backend = $this->_getParam('backend')) {
|
|
||||||
$params['backend'] = $backend;
|
|
||||||
}
|
|
||||||
if ($object instanceof Service) {
|
if ($object instanceof Service) {
|
||||||
$params['service'] = $object->service_description;
|
$params['service'] = $object->service_description;
|
||||||
} elseif ($service = $this->_getParam('service')) {
|
} elseif ($service = $this->_getParam('service')) {
|
||||||
$params['service'] = $service;
|
$params['service'] = $service;
|
||||||
}
|
}
|
||||||
|
if (isset($params['service'])) {
|
||||||
|
$tabs->add(
|
||||||
|
'service',
|
||||||
|
array(
|
||||||
|
'title' => 'Service',
|
||||||
|
'icon' => '',
|
||||||
|
'url' => 'monitoring/show/service',
|
||||||
|
'urlParams' => $params,
|
||||||
|
'tagParams' => array(
|
||||||
|
'data-icinga-target' => 'detail'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$tabs->add(
|
||||||
|
'host',
|
||||||
|
array(
|
||||||
|
'title' => 'Host',
|
||||||
|
'icon' => '',
|
||||||
|
'url' => 'monitoring/show/host',
|
||||||
|
'urlParams' => $params,
|
||||||
|
'tagParams' => array(
|
||||||
|
'data-icinga-target' => 'detail'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$tabs->add(
|
||||||
|
'services',
|
||||||
|
array(
|
||||||
|
'title' => 'Services',
|
||||||
|
'icon' => 'img/classic/service.png',
|
||||||
|
'url' => 'monitoring/show/services',
|
||||||
|
'urlParams' => $params,
|
||||||
|
'tagParams' => array(
|
||||||
|
'data-icinga-target' => 'detail'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$tabs->add(
|
||||||
|
'history',
|
||||||
|
array(
|
||||||
|
'title' => 'History',
|
||||||
|
'icon' => '',
|
||||||
|
'url' => 'monitoring/show/history',
|
||||||
|
'urlParams' => $params,
|
||||||
|
'tagParams' => array(
|
||||||
|
'data-icinga-target' => 'detail'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
$tabs->extend(new OutputFormat())
|
$tabs->extend(new OutputFormat())
|
||||||
->extend(new DashboardAction())
|
->extend(new DashboardAction());
|
||||||
->extend(new BasketAction);
|
|
||||||
|
|
||||||
return $tabs;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// @codingStandardsIgnoreEnd
|
// @codingStandardsIgnoreEnd
|
||||||
|
@ -8,7 +8,7 @@ $viewHelper = $this->getHelper('MonitoringState');
|
|||||||
<div data-icinga-component="app/mainDetailGrid">
|
<div data-icinga-component="app/mainDetailGrid">
|
||||||
|
|
||||||
<?= $this->sortControl->render($this); ?>
|
<?= $this->sortControl->render($this); ?>
|
||||||
<?= $this->paginationControl($this->services, null, null, array('preserve' => $this->preserve)); ?>
|
<?= $this->paginationControl($services, null, null, array('preserve' => $this->preserve)); ?>
|
||||||
|
|
||||||
<table class="table table-condensed">
|
<table class="table table-condensed">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -1,29 +1,19 @@
|
|||||||
<?php if (!empty($object->comments)): ?>
|
<div>
|
||||||
<?
|
Comments
|
||||||
$commets = array();
|
<?php if (!empty($object->comments)): ?>
|
||||||
foreach ($object->comments as $comment) {
|
<blockquote>
|
||||||
$text = $this->escape($comment->comment_data);
|
<?php foreach ($object->comments as $comment): ?>
|
||||||
$commets[] = sprintf(
|
<p>
|
||||||
'[%s] %s (%s): %s',
|
<?= sprintf(
|
||||||
$this->escape($comment->comment_author),
|
'[%s] %s (%s): %s',
|
||||||
$this->format()->timeSince($comment->comment_timestamp),
|
$this->escape($comment->comment_author),
|
||||||
$comment->comment_type,
|
$this->format()->timeSince($comment->comment_timestamp),
|
||||||
$text
|
$comment->comment_type,
|
||||||
);
|
$comment->comment_data
|
||||||
}
|
); ?>
|
||||||
?>
|
<a href="#" class="button">{{REMOVE_ICON}}</a>
|
||||||
<?php endif; ?>
|
</p>
|
||||||
<div class="panel panel-default ">
|
<?php endforeach; ?>
|
||||||
<div class="panel-heading">
|
</blockquote>
|
||||||
<span>{{COMMENT_ICON}} Comments</span>
|
<?php endif; ?>
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<a href="#" class="button">{{COMMENT_COMMAND_BUTTON}}</a>
|
|
||||||
<a href="#" class="button">{{NOTIFICATION_COMMAND_BUTTON}}</a><br/>
|
|
||||||
<?php if (!empty($object->comments)): ?>
|
|
||||||
<blockquote> <?= implode('<br />', $commets); ?><a href="#" class="button">{{REMOVE_COMMENT_COMMAND}}</a></blockquote>
|
|
||||||
<?php else: ?>
|
|
||||||
No comments
|
|
||||||
<?php endif; ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,103 +0,0 @@
|
|||||||
<?php if (!empty($object->eventHistory)): ?>
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<span>History</span>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<table class="table table-condensed">
|
|
||||||
<tbody>
|
|
||||||
<?php foreach ($object->eventHistory as $event): ?>
|
|
||||||
<tr>
|
|
||||||
<td><?= date('d.m. H:i', $event->timestamp); ?></td>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<?php if ($object instanceof Icinga\Module\Monitoring\Object\Service): ?>
|
|
||||||
<a href="<?= $this->href('monitoring/show/service', array(
|
|
||||||
'host' => $object->host_name,
|
|
||||||
'service' => $event->service_description
|
|
||||||
)); ?>">
|
|
||||||
<?= $event->service_description ?>
|
|
||||||
</a>
|
|
||||||
<?php else: ?>
|
|
||||||
<a href="<?= $this->href('monitoring/show/host', array(
|
|
||||||
'host' => $object->host_name
|
|
||||||
)); ?>">
|
|
||||||
<?= $event->host_name ?>
|
|
||||||
</a>
|
|
||||||
<?php endif; ?>
|
|
||||||
</td>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<?php
|
|
||||||
switch ($event->type) {
|
|
||||||
case 'notify':
|
|
||||||
$icon = '{{NOTIFICATION_ICON}}';
|
|
||||||
$title = 'Notification';
|
|
||||||
$msg = $event->output;
|
|
||||||
break;
|
|
||||||
case 'comment':
|
|
||||||
$icon = '{{COMMENT_ICON}}';
|
|
||||||
$title = 'Comment';
|
|
||||||
$msg = $event->output;
|
|
||||||
break;
|
|
||||||
case 'ack':
|
|
||||||
$icon = '{{ACKNOWLEDGEMENT_ICON}}';
|
|
||||||
$title = 'Acknowledgement';
|
|
||||||
$msg = '';
|
|
||||||
break;
|
|
||||||
case 'dt_comment':
|
|
||||||
$icon = '{{IN_DOWNTIME_ICON}}';
|
|
||||||
$title = 'In Downtime';
|
|
||||||
$msg = $event->output;
|
|
||||||
break;
|
|
||||||
case 'flapping':
|
|
||||||
$icon = '{{FLAPPING_ICON}}';
|
|
||||||
$title = 'Flapping';
|
|
||||||
$msg = '';
|
|
||||||
break;
|
|
||||||
case 'hard_state':
|
|
||||||
$icon = '{{HARDSTATE_ICON}}';
|
|
||||||
$title = 'Hard State';
|
|
||||||
$msg = '[' . $event->attempt . '/' . $event->max_attempts . ']';
|
|
||||||
break;
|
|
||||||
case 'soft_state':
|
|
||||||
$icon = '{{SOFTSTATE_ICON}}';
|
|
||||||
$title = 'Soft State';
|
|
||||||
$msg = '[' . $event->attempt . '/' . $event->max_attempts . ']';
|
|
||||||
break;
|
|
||||||
case 'dt_start':
|
|
||||||
$icon = '{{DOWNTIME_START_ICON}}';
|
|
||||||
$title = 'Downtime Start';
|
|
||||||
$msg = $event->output;
|
|
||||||
break;
|
|
||||||
case 'dt_end':
|
|
||||||
$icon = '{{DOWNTIME_END_ICON}}';
|
|
||||||
$title = 'Downtime End';
|
|
||||||
$msg = $event->output;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
<a href="#" title="<?= $title ?>"><i><?= $icon ?></i></a>
|
|
||||||
<?php if (!empty($msg)) { echo $msg; } ?>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<? endforeach; ?>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<?php if ($object instanceof Icinga\Module\Monitoring\Object\Service): ?>
|
|
||||||
<a href="<?= $this->href('monitoring/list/eventhistory', array(
|
|
||||||
'host' => $object->host_name,
|
|
||||||
'service' => $object->service_description
|
|
||||||
)); ?>">
|
|
||||||
All events for <?= $event->service_description ?>
|
|
||||||
</a>
|
|
||||||
<?php else: ?>
|
|
||||||
<a href="<?= $this->href('monitoring/list/eventhistory', array(
|
|
||||||
'host' => $object->host_name
|
|
||||||
)); ?>">
|
|
||||||
All events for <?= $event->host_name ?>
|
|
||||||
</a>
|
|
||||||
<?php endif; ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php endif; ?>
|
|
@ -1,15 +1,93 @@
|
|||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">Properties</div>
|
||||||
<span>Properties</span>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<table class="table table-bordered">
|
<table class="table table-bordered">
|
||||||
<?php foreach ($this->monitoringProperties($object) as $label => $value): ?>
|
|
||||||
<tr>
|
<tr>
|
||||||
<th><?= $label ?></th>
|
<th>Current Attempt</th>
|
||||||
<td><?= $value ?></td>
|
<td>
|
||||||
|
<?= sprintf(
|
||||||
|
'%s/%s (%s state)',
|
||||||
|
$object->current_check_attempt,
|
||||||
|
$object->max_check_attempts,
|
||||||
|
($object->state_type === '1') ? 'HARD' : 'SOFT'
|
||||||
|
); ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Check Type</th>
|
||||||
|
<td>
|
||||||
|
<?php if ($object->passive_checks_enabled === '1' && $object->active_checks_enabled === '0'): ?>
|
||||||
|
PASSIVE
|
||||||
|
<?php elseif ($object->passive_checks_enabled === '0' && $object->active_checks_enabled === '0'): ?>
|
||||||
|
DISABLED
|
||||||
|
<?php else: ?>
|
||||||
|
ACTIVE
|
||||||
|
<?php endif; ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Check Latency / Duration</th>
|
||||||
|
<td>
|
||||||
|
<?php if ($object->passive_checks_enabled === '0' && $object->active_checks_enabled === '0'): ?>
|
||||||
|
N/A
|
||||||
|
<?php else: ?>
|
||||||
|
<?= sprintf('%.4f', $object->check_latency); ?> / <?= sprintf('%.4f', $object->check_execution_time); ?> seconds
|
||||||
|
<?php endif; ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Last Notification</th>
|
||||||
|
<td>
|
||||||
|
<?php
|
||||||
|
if ($object->service_description) {
|
||||||
|
$notificationsHref = $this->href('monitoring/list/notifications',
|
||||||
|
array(
|
||||||
|
'host' => $object->host_name,
|
||||||
|
'service' => $object->service_description
|
||||||
|
)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$notificationsHref = $this->href('monitoring/list/notifications',
|
||||||
|
array(
|
||||||
|
'host' => $object->host_name
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<a href="<?= $notificationsHref ?>">
|
||||||
|
<?php if ($object->last_notification === '0000-00-00 00:00:00'): ?>
|
||||||
|
N/A
|
||||||
|
<?php else: ?>
|
||||||
|
<?= $object->last_notification ?>
|
||||||
|
<?php if ($object->current_notification_number > 0): ?>
|
||||||
|
<br />
|
||||||
|
<?= $object->current_notification_number ?> notifications sent during current problem state
|
||||||
|
<?php endif ;?>
|
||||||
|
<?php endif; ?>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Is This <?= $object->service_description ? 'Service' : 'Host' ?> Flapping?</th>
|
||||||
|
<td>
|
||||||
|
<?php if ($object->is_flapping === '1'): ?>
|
||||||
|
YES
|
||||||
|
<?php else: ?>
|
||||||
|
NO
|
||||||
|
<?php endif; ?>
|
||||||
|
<?= sprintf('%.2f', $object->percent_state_change); ?>% state change
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>In Scheduled Downtime?</th>
|
||||||
|
<td>
|
||||||
|
<?php if ($object->in_downtime === '1'): ?>
|
||||||
|
YES
|
||||||
|
<?php else: ?>
|
||||||
|
NO
|
||||||
|
<?php endif; ?>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php endforeach; ?>
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,7 +1,103 @@
|
|||||||
<?= $this->render('show/components/header.phtml') ?>
|
<?= $this->tabs->render($this); ?>
|
||||||
<?php
|
|
||||||
$history->limit(10);
|
|
||||||
$hhistory = $this->history->paginate();
|
|
||||||
|
|
||||||
?>
|
<h1>History</h1>
|
||||||
|
|
||||||
|
<?php if (!empty($history)): ?>
|
||||||
|
<div data-icinga-component="app/mainDetailGrid">
|
||||||
|
<?= $this->paginationControl($history, null, null, array('preserve' => $this->preserve)); ?>
|
||||||
|
<table class="table table-condensed">
|
||||||
|
<tbody>
|
||||||
|
<?php foreach ($history as $event): ?>
|
||||||
|
<tr>
|
||||||
|
<td><?= date('d.m. H:i', $event->timestamp); ?></td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<?php if ($object instanceof Icinga\Module\Monitoring\Object\Service): ?>
|
||||||
|
<a href="<?= $this->href('monitoring/show/service', array(
|
||||||
|
'host' => $object->host_name,
|
||||||
|
'service' => $event->service_description
|
||||||
|
)); ?>">
|
||||||
|
<?= $event->service_description ?>
|
||||||
|
</a>
|
||||||
|
<?php else: ?>
|
||||||
|
<a href="<?= $this->href('monitoring/show/host', array(
|
||||||
|
'host' => $object->host_name
|
||||||
|
)); ?>">
|
||||||
|
<?= $event->host_name ?>
|
||||||
|
</a>
|
||||||
|
<?php endif; ?>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<?php
|
||||||
|
switch ($event->type) {
|
||||||
|
case 'notify':
|
||||||
|
$icon = '{{NOTIFICATION_ICON}}';
|
||||||
|
$title = 'Notification';
|
||||||
|
$msg = $event->output;
|
||||||
|
break;
|
||||||
|
case 'comment':
|
||||||
|
$icon = '{{COMMENT_ICON}}';
|
||||||
|
$title = 'Comment';
|
||||||
|
$msg = $event->output;
|
||||||
|
break;
|
||||||
|
case 'ack':
|
||||||
|
$icon = '{{ACKNOWLEDGEMENT_ICON}}';
|
||||||
|
$title = 'Acknowledgement';
|
||||||
|
$msg = '';
|
||||||
|
break;
|
||||||
|
case 'dt_comment':
|
||||||
|
$icon = '{{IN_DOWNTIME_ICON}}';
|
||||||
|
$title = 'In Downtime';
|
||||||
|
$msg = $event->output;
|
||||||
|
break;
|
||||||
|
case 'flapping':
|
||||||
|
$icon = '{{FLAPPING_ICON}}';
|
||||||
|
$title = 'Flapping';
|
||||||
|
$msg = '';
|
||||||
|
break;
|
||||||
|
case 'hard_state':
|
||||||
|
$icon = '{{HARDSTATE_ICON}}';
|
||||||
|
$title = 'Hard State';
|
||||||
|
$msg = '[' . $event->attempt . '/' . $event->max_attempts . ']';
|
||||||
|
break;
|
||||||
|
case 'soft_state':
|
||||||
|
$icon = '{{SOFTSTATE_ICON}}';
|
||||||
|
$title = 'Soft State';
|
||||||
|
$msg = '[' . $event->attempt . '/' . $event->max_attempts . ']';
|
||||||
|
break;
|
||||||
|
case 'dt_start':
|
||||||
|
$icon = '{{DOWNTIME_START_ICON}}';
|
||||||
|
$title = 'Downtime Start';
|
||||||
|
$msg = $event->output;
|
||||||
|
break;
|
||||||
|
case 'dt_end':
|
||||||
|
$icon = '{{DOWNTIME_END_ICON}}';
|
||||||
|
$title = 'Downtime End';
|
||||||
|
$msg = $event->output;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<a href="#" title="<?= $title ?>"><i><?= $icon ?></i></a>
|
||||||
|
<?php if (!empty($msg)) { echo $msg; } ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<? endforeach; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<?php if ($object instanceof Icinga\Module\Monitoring\Object\Service): ?>
|
||||||
|
<a href="<?= $this->href('monitoring/list/eventhistory', array(
|
||||||
|
'host' => $object->host_name,
|
||||||
|
'service' => $object->service_description
|
||||||
|
)); ?>">
|
||||||
|
All events for <?= $event->service_description ?>
|
||||||
|
</a>
|
||||||
|
<?php else: ?>
|
||||||
|
<a href="<?= $this->href('monitoring/list/eventhistory', array(
|
||||||
|
'host' => $object->host_name
|
||||||
|
)); ?>">
|
||||||
|
All events for <?= $event->host_name ?>
|
||||||
|
</a>
|
||||||
|
<?php endif; ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
@ -1,15 +1,61 @@
|
|||||||
<div class="panel panel-default">
|
<?= $this->tabs->render($this); ?>
|
||||||
<div class="panel-heading">
|
|
||||||
|
<div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
<?php if ($this->object->host_icon_image): ?>
|
<?php if ($this->object->host_icon_image): ?>
|
||||||
<img src="<?= $this->object->host_icon_image; ?>" alt="Host image" />
|
<img src="<?= $this->object->host_icon_image; ?>" alt="Host image" />
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
{{HOST_ICON}}
|
{{HOST_ICON}}
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<h1>Host Status <?= $this->escape($this->object->host_name); ?></h1>
|
<h4>
|
||||||
|
Host Status
|
||||||
|
<a href="<?= $this->href('monitoring/list/services', array('host' => $object->host_name)); ?>">
|
||||||
|
<?= $this->escape($this->object->host_name); ?>
|
||||||
|
</a>
|
||||||
|
<?php if ($this->object->host_address && $this->object->host_address !== $this->object->host_name): ?>
|
||||||
|
(<?= $this->object->host_address; ?>)
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php if (isset($this->object->host_alias) && $this->object->host_alias !== $this->object->host_name): ?>
|
||||||
|
(<?= $this->object->host_alias; ?>)
|
||||||
|
<?php endif; ?>
|
||||||
|
</h4>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<?= $this->util()->getHostStateName($this->object->host_state); ?>
|
||||||
|
since <?= $this->timeSince($this->object->host_last_state_change); ?>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="panel-body">
|
<div>
|
||||||
|
<?= $this->pluginOutput($this->object->output); ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a class="button" href="#">{{RECHECK_COMMAND}</a>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<?= $this->perfdata($this->object->perfdata); ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<?= $this->pluginOutput($this->object->long_output); ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?= $this->render('show/components/comments.phtml'); ?>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
Check Statistics
|
||||||
|
<dl class="dl-horizontal">
|
||||||
|
<dt>Last Check</dt>
|
||||||
|
<dd><?= $object->last_check; ?></dd>
|
||||||
|
<dt>Next Check</dt>
|
||||||
|
<dd><?= $object->next_check; ?> <a href="#" class="button">{{RESCHEDULE_COMMAND}}</a></dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
<table>
|
<table>
|
||||||
|
<i class="successIcon"></i>
|
||||||
<tr>
|
<tr>
|
||||||
<?php if (!$object->host_handled && $object->host_state > 0): ?>
|
<?php if (!$object->host_handled && $object->host_state > 0): ?>
|
||||||
<td>
|
<td>
|
||||||
@ -27,37 +73,19 @@
|
|||||||
<i>{{ACKNOWLEDGED_ICON}}</i>
|
<i>{{ACKNOWLEDGED_ICON}}</i>
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<?php else: ?>
|
|
||||||
<td>
|
|
||||||
Status
|
|
||||||
</td>
|
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<td>
|
|
||||||
<?= $this->util()->getHostStateName($this->object->host_state); ?>
|
|
||||||
since <?= $this->timeSince($this->object->host_last_state_change); ?>
|
|
||||||
</td>
|
|
||||||
<td><a class="button" href="#">{{RECHECK_COMMAND_BUTTON}</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Last Check</td>
|
<td>Last Check</td>
|
||||||
<td><?= $object->last_check ?></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Next Check</td>
|
<td>Next Check</td>
|
||||||
<td><?= $object->next_check ?></td>
|
<td></td>
|
||||||
<td><a href="#" class="button">{{RESCHEDULE_COMMAND_BUTTON}}</a></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php if ($this->object->host_address && $this->object->host_address !== $this->object->host_name): ?>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>Host Address</td>
|
|
||||||
<td><?= $this->escape($this->object->host_address); ?></td>
|
|
||||||
</tr>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if (isset($this->object->host_alias) && $this->object->host_alias !== $this->object->host_name): ?>
|
|
||||||
<tr>
|
|
||||||
<td>Alias</td>
|
|
||||||
<td><?= $this->object->host_alias; ?></td>
|
|
||||||
<?php endif; ?>
|
|
||||||
<?php if ($this->object->host_action_url || $this->object->host_notes_url): ?>
|
<?php if ($this->object->host_action_url || $this->object->host_notes_url): ?>
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="2">
|
<td rowspan="2">
|
||||||
@ -70,40 +98,18 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<tr>
|
|
||||||
<td>Plugin Output</td>
|
|
||||||
<td>
|
|
||||||
<?= $this->pluginOutput($this->object->output); ?>
|
|
||||||
<?= $this->pluginOutput($this->object->long_output); ?>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<a class="button" href="#">{{SUBMIT_PASSIVE_CHECK_RESULT_COMMAND}}</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<?php if ($this->object->perfdata): ?>
|
<?php if ($this->object->perfdata): ?>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Performance Data</td>
|
<td>Performance Data</td>
|
||||||
<td><?= $this->perfdata($this->object->perfdata); ?></td>
|
<td><?= $this->perfdata($this->object->perfdata); ?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<tr>
|
|
||||||
<td colspan="2">
|
|
||||||
<a href="<?= $this->href('monitoring/list/services', array('host' => $object->host_name)); ?>">
|
|
||||||
View Services For This Host
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<a class="button" href="#">{{{RECHECK_ALL_SERVICES_COMMAND}}</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?= $this->render('show/components/downtime.phtml'); ?>
|
<?= $this->render('show/components/downtime.phtml'); ?>
|
||||||
|
|
||||||
<?= $this->render('show/components/comments.phtml'); ?>
|
|
||||||
|
|
||||||
<?= $this->render('show/components/properties.phtml'); ?>
|
<?= $this->render('show/components/properties.phtml'); ?>
|
||||||
|
|
||||||
<?= $this->render('show/components/flags.phtml'); ?>
|
<?= $this->render('show/components/flags.phtml'); ?>
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
<?= $this->tabs->render($this); ?>
|
||||||
|
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
{{SERVICE_ICON}} <h1>Service Status <?= $this->escape($this->object->service_description); ?></h1>
|
{{SERVICE_ICON}} <h1>Service Status <?= $this->escape($this->object->service_description); ?></h1>
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
<?= $this->tabs->render($this); ?>
|
||||||
|
<?= $this->partial(
|
||||||
|
'list/services-compact.phtml',
|
||||||
|
'monitoring', array(
|
||||||
|
'services' => $services
|
||||||
|
)
|
||||||
|
); ?>
|
93
modules/monitoring/library/Monitoring/Controller.php
Normal file
93
modules/monitoring/library/Monitoring/Controller.php
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
<?php
|
||||||
|
// {{{ICINGA_LICENSE_HEADER}}}
|
||||||
|
// {{{ICINGA_LICENSE_HEADER}}}
|
||||||
|
|
||||||
|
namespace Icinga\Module\Monitoring;
|
||||||
|
|
||||||
|
use Icinga\Application\Config as IcingaConfig;
|
||||||
|
use Icinga\Module\Monitoring\DataView\HostAndServiceStatus as HostAndServiceStatusView;
|
||||||
|
use Icinga\Web\Controller\ActionController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class for all monitoring action controller
|
||||||
|
*/
|
||||||
|
class Controller extends ActionController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Retrieve services from either given parameters or request
|
||||||
|
*
|
||||||
|
* @param array $params
|
||||||
|
*
|
||||||
|
* @return \Zend_Paginator
|
||||||
|
*/
|
||||||
|
protected function fetchServices(array $params = null)
|
||||||
|
{
|
||||||
|
$columns = array(
|
||||||
|
'host_name',
|
||||||
|
'host_state',
|
||||||
|
'host_state_type',
|
||||||
|
'host_last_state_change',
|
||||||
|
'host_address',
|
||||||
|
'host_handled',
|
||||||
|
'service_description',
|
||||||
|
'service_display_name',
|
||||||
|
'service_state',
|
||||||
|
'service_in_downtime',
|
||||||
|
'service_acknowledged',
|
||||||
|
'service_handled',
|
||||||
|
'service_output',
|
||||||
|
'service_last_state_change',
|
||||||
|
'service_icon_image',
|
||||||
|
'service_long_output',
|
||||||
|
'service_is_flapping',
|
||||||
|
'service_state_type',
|
||||||
|
'service_handled',
|
||||||
|
'service_severity',
|
||||||
|
'service_last_check',
|
||||||
|
'service_notifications_enabled',
|
||||||
|
'service_action_url',
|
||||||
|
'service_notes_url',
|
||||||
|
'service_last_comment',
|
||||||
|
'service_active_checks_enabled',
|
||||||
|
'service_passive_checks_enabled'
|
||||||
|
);
|
||||||
|
if ($params === null) {
|
||||||
|
$query = HostAndServiceStatusView::fromRequest(
|
||||||
|
$this->_request,
|
||||||
|
$columns
|
||||||
|
)->getQuery();
|
||||||
|
} else {
|
||||||
|
$params['backend'] = $this->_request->getParam('backend');
|
||||||
|
$query = HostAndServiceStatusView::fromParams(
|
||||||
|
$params,
|
||||||
|
$columns
|
||||||
|
)->getQuery();
|
||||||
|
}
|
||||||
|
$this->handleFormatRequest($query);
|
||||||
|
return $query->paginate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function handleFormatRequest($query)
|
||||||
|
{
|
||||||
|
if ($this->_getParam('format') === 'sql'
|
||||||
|
&& IcingaConfig::app()->global->get('environment', 'production') === 'development') {
|
||||||
|
echo '<pre>'
|
||||||
|
. htmlspecialchars(wordwrap($query->dump()))
|
||||||
|
. '</pre>';
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
if ($this->_getParam('format') === 'json'
|
||||||
|
|| $this->_request->getHeader('Accept') === 'application/json')
|
||||||
|
{
|
||||||
|
header('Content-type: application/json');
|
||||||
|
echo json_encode($query->fetchAll());
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
if ($this->_getParam('format') === 'csv'
|
||||||
|
|| $this->_request->getHeader('Accept') === 'text/csv') {
|
||||||
|
Csv::fromQuery($query)->dump();
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// @codingStandardsIgnoreEnd
|
@ -99,6 +99,33 @@ abstract class DataView
|
|||||||
return $view;
|
return $view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create view from params
|
||||||
|
*
|
||||||
|
* @param array $params
|
||||||
|
* @param array $columns
|
||||||
|
*
|
||||||
|
* @return static
|
||||||
|
*/
|
||||||
|
public static function fromParams(array $params, array $columns = null)
|
||||||
|
{
|
||||||
|
$view = new static(Backend::createBackend($params['backend']), $columns);
|
||||||
|
$view->filter($params);
|
||||||
|
$order = isset($params['order']) ? $params['order'] : null;
|
||||||
|
if ($order !== null) {
|
||||||
|
if (strtolower($order) === 'desc') {
|
||||||
|
$order = self::SORT_DESC;
|
||||||
|
} else {
|
||||||
|
$order = self::SORT_ASC;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$view->sort(
|
||||||
|
isset($params['sort']) ? $params['sort'] : null,
|
||||||
|
$order
|
||||||
|
);
|
||||||
|
return $view;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filter rows that match all of the given filters. If a filter is not valid, it's silently ignored
|
* Filter rows that match all of the given filters. If a filter is not valid, it's silently ignored
|
||||||
*
|
*
|
||||||
|
@ -150,7 +150,7 @@ abstract class AbstractObject
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function fetchEventHistory()
|
public function fetchEventHistory()
|
||||||
{
|
{
|
||||||
$this->foreign['eventHistory'] = $this->applyObjectFilter(
|
$this->foreign['eventHistory'] = $this->applyObjectFilter(
|
||||||
$this->backend->select()->from('eventHistory', array(
|
$this->backend->select()->from('eventHistory', array(
|
||||||
|
@ -30,8 +30,7 @@ class Host extends AbstractObject
|
|||||||
->fetchContacts()
|
->fetchContacts()
|
||||||
->fetchContactgroups()
|
->fetchContactgroups()
|
||||||
->fetchCustomvars()
|
->fetchCustomvars()
|
||||||
->fetchComments()
|
->fetchComments();
|
||||||
->fetchEventHistory();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function fetchObject()
|
protected function fetchObject()
|
||||||
@ -42,7 +41,7 @@ class Host extends AbstractObject
|
|||||||
'host_address',
|
'host_address',
|
||||||
'host_state',
|
'host_state',
|
||||||
'host_handled',
|
'host_handled',
|
||||||
'host_in_downtime',
|
'in_downtime' => 'host_in_downtime',
|
||||||
'host_acknowledged',
|
'host_acknowledged',
|
||||||
'host_last_state_change',
|
'host_last_state_change',
|
||||||
'last_check' => 'host_last_check',
|
'last_check' => 'host_last_check',
|
||||||
@ -59,7 +58,13 @@ class Host extends AbstractObject
|
|||||||
'notifications_enabled' => 'host_notifications_enabled',
|
'notifications_enabled' => 'host_notifications_enabled',
|
||||||
'event_handler_enabled' => 'host_event_handler_enabled',
|
'event_handler_enabled' => 'host_event_handler_enabled',
|
||||||
'flap_detection_enabled' => 'host_flap_detection_enabled',
|
'flap_detection_enabled' => 'host_flap_detection_enabled',
|
||||||
'active_checks_enabled' => 'host_active_checks_enabled'
|
'active_checks_enabled' => 'host_active_checks_enabled',
|
||||||
|
'current_check_attempt' => 'host_current_check_attempt',
|
||||||
|
'max_check_attempts' => 'host_max_check_attempts',
|
||||||
|
'last_notification' => 'host_last_notification',
|
||||||
|
'current_notification_number' => 'host_current_notification_number',
|
||||||
|
'percent_state_change' => 'host_percent_state_change',
|
||||||
|
'is_flapping' => 'host_is_flapping'
|
||||||
))->where('host_name', $this->name1)->fetchRow();
|
))->where('host_name', $this->name1)->fetchRow();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,8 +31,7 @@ class Service extends AbstractObject
|
|||||||
->fetchContacts()
|
->fetchContacts()
|
||||||
->fetchContactgroups()
|
->fetchContactgroups()
|
||||||
->fetchCustomvars()
|
->fetchCustomvars()
|
||||||
->fetchComments()
|
->fetchComments();
|
||||||
->fetchEventHistory();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function fetchObject()
|
protected function fetchObject()
|
||||||
|
@ -488,10 +488,15 @@ define(['jquery', 'logging', 'icinga/componentLoader', 'URIjs/URI', 'URIjs/URITe
|
|||||||
if (Container.isExternalLink($(targetEl).attr('href'))) {
|
if (Container.isExternalLink($(targetEl).attr('href'))) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
// detail links render to main by default;
|
if ($(targetEl).attr('data-icinga-target') === 'detail') {
|
||||||
Icinga.replaceBodyFromUrl(
|
Icinga.replaceBodyFromUrl(
|
||||||
mainContainer.updateContainerHref(URI($(targetEl).attr('href')).href())
|
detailContainer.updateContainerHref(URI($(targetEl).attr('href')).href())
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
Icinga.replaceBodyFromUrl(
|
||||||
|
mainContainer.updateContainerHref(URI($(targetEl).attr('href')).href())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
ev.stopPropagation();
|
ev.stopPropagation();
|
||||||
|
@ -166,10 +166,16 @@ function(Container, $, logger, URI) {
|
|||||||
|
|
||||||
});
|
});
|
||||||
$('.pagination li a', contentNode.parent()).on('click', function(ev) {
|
$('.pagination li a', contentNode.parent()).on('click', function(ev) {
|
||||||
|
|
||||||
var container = (new Container(this));
|
var container = (new Container(this));
|
||||||
container.replaceDomFromUrl(
|
logger.debug("Pagination clicked in " + container.containerType);
|
||||||
container.updateContainerHref($(this).attr('href'))
|
// Detail will be removed when main pagination changes
|
||||||
);
|
if (container.containerType === 'icingamain') {
|
||||||
|
Icinga.replaceBodyFromUrl(URI($(this).attr('href')).removeQuery('detail'));
|
||||||
|
} else {
|
||||||
|
container.replaceDomFromUrl($(this).attr('href'));
|
||||||
|
}
|
||||||
|
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
ev.stopPropagation();
|
ev.stopPropagation();
|
||||||
return false;
|
return false;
|
||||||
@ -207,7 +213,7 @@ function(Container, $, logger, URI) {
|
|||||||
this.registerControls();
|
this.registerControls();
|
||||||
this.registerTableLinks();
|
this.registerTableLinks();
|
||||||
this.registerHistoryChanges();
|
this.registerHistoryChanges();
|
||||||
this.registerLoadIndicator();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
this.construct(gridDomNode);
|
this.construct(gridDomNode);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user