Merge branch 'bugfix/Take-display_name-into-account-when-searching-for-host-and-service-names-8241'
fixes #8241
This commit is contained in:
commit
47f21eebaa
|
@ -10,6 +10,7 @@ use Icinga\Data\Filter\FilterOr;
|
|||
use Icinga\Web\Url;
|
||||
use Icinga\Application\Icinga;
|
||||
use Icinga\Exception\ProgrammingError;
|
||||
use Icinga\Web\Notification;
|
||||
use Exception;
|
||||
|
||||
/**
|
||||
|
@ -215,31 +216,10 @@ class FilterEditor extends AbstractWidget
|
|||
$filter = $this->getFilter();
|
||||
|
||||
if ($search !== null) {
|
||||
if ($this->searchColumns === null) {
|
||||
if (empty($this->searchColumns)) {
|
||||
if (strpos($search, '=') === false) {
|
||||
// TODO: Ask the view for (multiple) search columns
|
||||
switch($request->getActionName()) {
|
||||
case 'services':
|
||||
$searchCol = 'service';
|
||||
break;
|
||||
case 'hosts':
|
||||
$searchCol = 'host';
|
||||
break;
|
||||
case 'hostgroups':
|
||||
$searchCol = 'hostgroup';
|
||||
break;
|
||||
case 'servicegroups':
|
||||
$searchCol = 'servicegroup';
|
||||
break;
|
||||
default:
|
||||
$searchCol = null;
|
||||
}
|
||||
|
||||
if ($searchCol === null) {
|
||||
throw new Exception('Cannot search here');
|
||||
}
|
||||
$search = ltrim($search);
|
||||
$filter = $this->mergeRootExpression($filter, $searchCol, '=', "*$search*");
|
||||
Notification::error(mt('monitoring', 'Cannot search here'));
|
||||
return $this;
|
||||
} else {
|
||||
list($k, $v) = preg_split('/=/', $search);
|
||||
$filter = $this->mergeRootExpression($filter, trim($k), '=', ltrim($v));
|
||||
|
|
|
@ -163,7 +163,7 @@ class Monitoring_ChartController extends Controller
|
|||
public function hostgroupAction()
|
||||
{
|
||||
$query = $this->backend->select()->from(
|
||||
'groupsummary',
|
||||
'hostgroupsummary',
|
||||
array(
|
||||
'hostgroup',
|
||||
'hosts_up',
|
||||
|
@ -194,7 +194,7 @@ class Monitoring_ChartController extends Controller
|
|||
public function servicegroupAction()
|
||||
{
|
||||
$query = $this->backend->select()->from(
|
||||
'groupsummary',
|
||||
'servicegroupsummary',
|
||||
array(
|
||||
'servicegroup',
|
||||
'services_ok',
|
||||
|
|
|
@ -12,6 +12,7 @@ use Icinga\Web\Widget\Tabs;
|
|||
use Icinga\Data\Filter\Filter;
|
||||
use Icinga\Web\Widget;
|
||||
use Icinga\Module\Monitoring\Forms\StatehistoryForm;
|
||||
use Icinga\Module\Monitoring\DataView\DataView;
|
||||
|
||||
class Monitoring_ListController extends Controller
|
||||
{
|
||||
|
@ -468,35 +469,33 @@ class Monitoring_ListController extends Controller
|
|||
);
|
||||
$this->setAutorefreshInterval(12);
|
||||
|
||||
$query = $this->backend->select()->from('groupsummary', array(
|
||||
'servicegroup_name',
|
||||
'servicegroup_alias',
|
||||
'hosts_up',
|
||||
'hosts_unreachable_handled',
|
||||
'hosts_unreachable_unhandled',
|
||||
$query = $this->backend->select()->from('servicegroupsummary', array(
|
||||
'hosts_down_handled',
|
||||
'hosts_down_unhandled',
|
||||
'hosts_pending',
|
||||
'services_ok',
|
||||
'services_unknown_handled',
|
||||
'services_unknown_unhandled',
|
||||
'hosts_unreachable_handled',
|
||||
'hosts_unreachable_unhandled',
|
||||
'hosts_up',
|
||||
'servicegroup_alias',
|
||||
'servicegroup_name',
|
||||
'services_critical_handled',
|
||||
'services_critical_unhandled',
|
||||
'services_warning_handled',
|
||||
'services_warning_unhandled',
|
||||
'services_pending',
|
||||
'services_ok_last_state_change',
|
||||
'services_pending_last_state_change',
|
||||
'services_warning_last_state_change_handled',
|
||||
'services_critical_last_state_change_handled',
|
||||
'services_unknown_last_state_change_handled',
|
||||
'services_warning_last_state_change_unhandled',
|
||||
'services_critical_last_state_change_unhandled',
|
||||
'services_critical_unhandled',
|
||||
'services_ok',
|
||||
'services_ok_last_state_change',
|
||||
'services_pending',
|
||||
'services_pending_last_state_change',
|
||||
'services_total',
|
||||
'services_unknown_handled',
|
||||
'services_unknown_last_state_change_handled',
|
||||
'services_unknown_last_state_change_unhandled',
|
||||
'services_total'
|
||||
))->order('services_severity')->order('servicegroup_alias');
|
||||
// TODO(el): Can't default to the sort rules of the data view because it's meant for both host groups and
|
||||
// service groups. We should separate them.
|
||||
'services_unknown_unhandled',
|
||||
'services_warning_handled',
|
||||
'services_warning_last_state_change_handled',
|
||||
'services_warning_last_state_change_unhandled',
|
||||
'services_warning_unhandled'
|
||||
));
|
||||
$this->filterQuery($query);
|
||||
$this->view->servicegroups = $query;
|
||||
|
||||
|
@ -505,12 +504,7 @@ class Monitoring_ListController extends Controller
|
|||
$this->setupSortControl(array(
|
||||
'services_severity' => $this->translate('Severity'),
|
||||
'servicegroup_alias' => $this->translate('Service Group Name'),
|
||||
'services_total' => $this->translate('Total Services'),
|
||||
'services_ok' => $this->translate('Services OK'),
|
||||
'services_unknown' => $this->translate('Services UNKNOWN'),
|
||||
'services_critical' => $this->translate('Services CRITICAL'),
|
||||
'services_warning' => $this->translate('Services WARNING'),
|
||||
'services_pending' => $this->translate('Services PENDING')
|
||||
'services_total' => $this->translate('Total Services')
|
||||
), $query);
|
||||
}
|
||||
|
||||
|
@ -519,56 +513,42 @@ class Monitoring_ListController extends Controller
|
|||
$this->addTitleTab('hostgroups', $this->translate('Host Groups'), $this->translate('List host groups'));
|
||||
$this->setAutorefreshInterval(12);
|
||||
|
||||
$query = $this->backend->select()->from('groupsummary', array(
|
||||
'hostgroup_name',
|
||||
$query = $this->backend->select()->from('hostgroupsummary', array(
|
||||
'hostgroup_alias',
|
||||
'hosts_up',
|
||||
'hosts_unreachable_handled',
|
||||
'hosts_unreachable_unhandled',
|
||||
'hostgroup_name',
|
||||
'hosts_down_handled',
|
||||
'hosts_down_last_state_change_handled',
|
||||
'hosts_down_last_state_change_unhandled',
|
||||
'hosts_down_unhandled',
|
||||
'hosts_pending',
|
||||
'hosts_up_last_state_change',
|
||||
'hosts_pending_last_state_change',
|
||||
'hosts_down_last_state_change_handled',
|
||||
'hosts_unreachable_last_state_change_handled',
|
||||
'hosts_down_last_state_change_unhandled',
|
||||
'hosts_unreachable_last_state_change_unhandled',
|
||||
'hosts_total',
|
||||
'services_ok',
|
||||
'services_unknown_handled',
|
||||
'services_unknown_unhandled',
|
||||
'hosts_unreachable_handled',
|
||||
'hosts_unreachable_last_state_change_handled',
|
||||
'hosts_unreachable_last_state_change_unhandled',
|
||||
'hosts_unreachable_unhandled',
|
||||
'hosts_up',
|
||||
'hosts_up_last_state_change',
|
||||
'services_critical_handled',
|
||||
'services_critical_unhandled',
|
||||
'services_warning_handled',
|
||||
'services_warning_unhandled',
|
||||
'services_ok',
|
||||
'services_pending',
|
||||
'services_ok_last_state_change',
|
||||
'services_pending_last_state_change',
|
||||
'services_warning_last_state_change_handled',
|
||||
'services_critical_last_state_change_handled',
|
||||
'services_unknown_last_state_change_handled',
|
||||
'services_warning_last_state_change_unhandled',
|
||||
'services_critical_last_state_change_unhandled',
|
||||
'services_unknown_last_state_change_unhandled',
|
||||
'services_total'
|
||||
))->order('services_severity')->order('hostgroup_alias');
|
||||
// TODO(el): Can't default to the sort rules of the data view because it's meant for both host groups and
|
||||
// service groups. We should separate them.
|
||||
'services_total',
|
||||
'services_unknown_handled',
|
||||
'services_unknown_unhandled',
|
||||
'services_warning_handled',
|
||||
'services_warning_unhandled'
|
||||
));
|
||||
$this->filterQuery($query);
|
||||
$this->view->hostgroups = $query;
|
||||
|
||||
$this->setupLimitControl();
|
||||
$this->setupPaginationControl($this->view->hostgroups);
|
||||
$this->setupSortControl(array(
|
||||
'services_severity' => $this->translate('Severity'),
|
||||
'hosts_severity' => $this->translate('Severity'),
|
||||
'hostgroup_alias' => $this->translate('Host Group Name'),
|
||||
'services_total' => $this->translate('Total Services'),
|
||||
'services_ok' => $this->translate('Services OK'),
|
||||
'services_unknown' => $this->translate('Services UNKNOWN'),
|
||||
'services_critical' => $this->translate('Services CRITICAL'),
|
||||
'services_warning' => $this->translate('Services WARNING'),
|
||||
'services_pending' => $this->translate('Services PENDING')
|
||||
'hosts_total' => $this->translate('Total Hosts'),
|
||||
'services_total' => $this->translate('Total Services')
|
||||
), $query);
|
||||
}
|
||||
|
||||
|
@ -626,23 +606,31 @@ class Monitoring_ListController extends Controller
|
|||
$this->view->verticalPaginator = $pivot->paginateYAxis();
|
||||
}
|
||||
|
||||
protected function filterQuery($query)
|
||||
/**
|
||||
* Apply filters on a DataView
|
||||
*
|
||||
* @param DataView $dataView The DataView to apply filters on
|
||||
*
|
||||
* @return DataView $dataView
|
||||
*/
|
||||
protected function filterQuery(DataView $dataView)
|
||||
{
|
||||
$editor = Widget::create('filterEditor')
|
||||
->setQuery($query)
|
||||
->setQuery($dataView)
|
||||
->preserveParams(
|
||||
'limit', 'sort', 'dir', 'format', 'view', 'backend',
|
||||
'stateType', 'addColumns', '_dev'
|
||||
)
|
||||
->ignoreParams('page')
|
||||
->setSearchColumns($dataView->getSearchColumns())
|
||||
->handleRequest($this->getRequest());
|
||||
$query->applyFilter($editor->getFilter());
|
||||
$dataView->applyFilter($editor->getFilter());
|
||||
|
||||
$this->setupFilterControl($editor);
|
||||
$this->view->filter = $editor->getFilter();
|
||||
|
||||
$this->handleFormatRequest($query);
|
||||
return $query;
|
||||
$this->handleFormatRequest($dataView);
|
||||
return $dataView;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -5,59 +5,72 @@ namespace Icinga\Module\Monitoring\Backend\Ido\Query;
|
|||
|
||||
use Zend_Db_Select;
|
||||
|
||||
/**
|
||||
* Query for host and service group summaries
|
||||
*/
|
||||
class GroupSummaryQuery extends IdoQuery
|
||||
{
|
||||
protected $useSubqueryCount = true;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected $columnMap = array(
|
||||
'hoststatussummary' => array(
|
||||
'hosts_total' => 'SUM(CASE WHEN object_type = \'host\' THEN 1 ELSE 0 END)',
|
||||
'hostgroup' => 'hostgroup COLLATE latin1_general_ci',
|
||||
'hostgroup_alias' => 'hostgroup_alias COLLATE latin1_general_ci',
|
||||
'hostgroup_name' => 'hostgroup_name',
|
||||
'hosts_up' => 'SUM(CASE WHEN object_type = \'host\' AND state = 0 THEN 1 ELSE 0 END)',
|
||||
'hosts_unreachable' => 'SUM(CASE WHEN object_type = \'host\' AND state = 2 THEN 1 ELSE 0 END)',
|
||||
'hosts_unreachable_handled' => 'SUM(CASE WHEN object_type = \'host\' AND state = 2 AND acknowledged + in_downtime != 0 THEN 1 ELSE 0 END)',
|
||||
'hosts_unreachable_unhandled' => 'SUM(CASE WHEN object_type = \'host\' AND state = 2 AND acknowledged + in_downtime = 0 THEN 1 ELSE 0 END)',
|
||||
'hosts_down' => 'SUM(CASE WHEN object_type = \'host\' AND state = 1 THEN 1 ELSE 0 END)',
|
||||
'hosts_down_handled' => 'SUM(CASE WHEN object_type = \'host\' AND state = 1 AND acknowledged + in_downtime != 0 THEN 1 ELSE 0 END)',
|
||||
'hosts_down_last_state_change_handled' => 'MAX(CASE WHEN object_type = \'host\' AND state = 1 AND acknowledged + in_downtime != 0 THEN state_change ELSE 0 END)',
|
||||
'hosts_down_last_state_change_unhandled' => 'MAX(CASE WHEN object_type = \'host\' AND state = 1 AND acknowledged + in_downtime = 0 THEN state_change ELSE 0 END)',
|
||||
'hosts_down_unhandled' => 'SUM(CASE WHEN object_type = \'host\' AND state = 1 AND acknowledged + in_downtime = 0 THEN 1 ELSE 0 END)',
|
||||
'hosts_pending' => 'SUM(CASE WHEN object_type = \'host\' AND state = 99 THEN 1 ELSE 0 END)',
|
||||
'hosts_up_last_state_change' => 'MAX(CASE WHEN object_type = \'host\' AND state = 0 THEN state_change ELSE 0 END)',
|
||||
'hosts_pending_last_state_change' => 'MAX(CASE WHEN object_type = \'host\' AND state = 99 THEN state_change ELSE 0 END)',
|
||||
'hosts_down_last_state_change_handled' => 'MAX(CASE WHEN object_type = \'host\' AND state = 1 AND acknowledged + in_downtime != 0 THEN state_change ELSE 0 END)',
|
||||
'hosts_severity' => 'MAX(CASE WHEN object_type = \'host\' THEN severity ELSE 0 END)',
|
||||
'hosts_total' => 'SUM(CASE WHEN object_type = \'host\' THEN 1 ELSE 0 END)',
|
||||
'hosts_unreachable_last_state_change_handled' => 'MAX(CASE WHEN object_type = \'host\' AND state = 2 AND acknowledged + in_downtime != 0 THEN state_change ELSE 0 END)',
|
||||
'hosts_down_last_state_change_unhandled' => 'MAX(CASE WHEN object_type = \'host\' AND state = 1 AND acknowledged + in_downtime = 0 THEN state_change ELSE 0 END)',
|
||||
'hosts_unreachable_last_state_change_unhandled' => 'MAX(CASE WHEN object_type = \'host\' AND state = 2 AND acknowledged + in_downtime = 0 THEN state_change ELSE 0 END)',
|
||||
'hostgroup_name' => 'hostgroup_name',
|
||||
'hostgroup_alias' => 'hostgroup_alias',
|
||||
'hostgroup' => 'hostgroup'
|
||||
'hosts_up_last_state_change' => 'MAX(CASE WHEN object_type = \'host\' AND state = 0 THEN state_change ELSE 0 END)'
|
||||
),
|
||||
'servicestatussummary' => array(
|
||||
'services_total' => 'SUM(CASE WHEN object_type = \'service\' THEN 1 ELSE 0 END)',
|
||||
'services_ok' => 'SUM(CASE WHEN object_type = \'service\' AND state = 0 THEN 1 ELSE 0 END)',
|
||||
'services_pending' => 'SUM(CASE WHEN object_type = \'service\' AND state = 99 THEN 1 ELSE 0 END)',
|
||||
'services_warning' => 'SUM(CASE WHEN object_type = \'service\' AND state = 1 THEN 1 ELSE 0 END)',
|
||||
'services_warning_handled' => 'SUM(CASE WHEN object_type = \'service\' AND state = 1 AND acknowledged + in_downtime + host_state > 0 THEN 1 ELSE 0 END)',
|
||||
'servicegroup' => 'servicegroup COLLATE latin1_general_ci',
|
||||
'servicegroup_alias' => 'servicegroup_alias COLLATE latin1_general_ci',
|
||||
'servicegroup_name' => 'servicegroup_name',
|
||||
'services_critical' => 'SUM(CASE WHEN object_type = \'service\' AND state = 2 THEN 1 ELSE 0 END)',
|
||||
'services_critical_handled' => 'SUM(CASE WHEN object_type = \'service\' AND state = 2 AND acknowledged + in_downtime + host_state > 0 THEN 1 ELSE 0 END)',
|
||||
'services_critical_last_state_change_handled' => 'MAX(CASE WHEN object_type = \'service\' AND state = 2 AND acknowledged + in_downtime + host_state > 0 THEN state_change ELSE 0 END)',
|
||||
'services_critical_last_state_change_unhandled' => 'MAX(CASE WHEN object_type = \'service\' AND state = 2 AND acknowledged + in_downtime + host_state = 0 THEN state_change ELSE 0 END)',
|
||||
'services_critical_unhandled' => 'SUM(CASE WHEN object_type = \'service\' AND state = 2 AND acknowledged + in_downtime + host_state = 0 THEN 1 ELSE 0 END)',
|
||||
'services_ok' => 'SUM(CASE WHEN object_type = \'service\' AND state = 0 THEN 1 ELSE 0 END)',
|
||||
'services_ok_last_state_change' => 'MAX(CASE WHEN object_type = \'service\' AND state = 0 THEN state_change ELSE 0 END)',
|
||||
'services_pending' => 'SUM(CASE WHEN object_type = \'service\' AND state = 99 THEN 1 ELSE 0 END)',
|
||||
'services_pending_last_state_change' => 'MAX(CASE WHEN object_type = \'service\' AND state = 99 THEN state_change ELSE 0 END)',
|
||||
'services_severity' => 'MAX(CASE WHEN object_type = \'service\' THEN severity ELSE 0 END)',
|
||||
'services_total' => 'SUM(CASE WHEN object_type = \'service\' THEN 1 ELSE 0 END)',
|
||||
'services_unknown' => 'SUM(CASE WHEN object_type = \'service\' AND state = 3 THEN 1 ELSE 0 END)',
|
||||
'services_unknown_handled' => 'SUM(CASE WHEN object_type = \'service\' AND state = 3 AND acknowledged + in_downtime + host_state > 0 THEN 1 ELSE 0 END)',
|
||||
'services_warning_unhandled' => 'SUM(CASE WHEN object_type = \'service\' AND state = 1 AND acknowledged + in_downtime + host_state = 0 THEN 1 ELSE 0 END)',
|
||||
'services_critical_unhandled' => 'SUM(CASE WHEN object_type = \'service\' AND state = 2 AND acknowledged + in_downtime + host_state = 0 THEN 1 ELSE 0 END)',
|
||||
'services_unknown_unhandled' => 'SUM(CASE WHEN object_type = \'service\' AND state = 3 AND acknowledged + in_downtime + host_state = 0 THEN 1 ELSE 0 END)',
|
||||
'services_severity' => 'MAX(CASE WHEN object_type = \'service\' THEN severity ELSE 0 END)',
|
||||
'services_ok_last_state_change' => 'MAX(CASE WHEN object_type = \'service\' AND state = 0 THEN state_change ELSE 0 END)',
|
||||
'services_pending_last_state_change' => 'MAX(CASE WHEN object_type = \'service\' AND state = 99 THEN state_change ELSE 0 END)',
|
||||
'services_warning_last_state_change_handled' => 'MAX(CASE WHEN object_type = \'service\' AND state = 1 AND acknowledged + in_downtime + host_state > 0 THEN state_change ELSE 0 END)',
|
||||
'services_critical_last_state_change_handled' => 'MAX(CASE WHEN object_type = \'service\' AND state = 2 AND acknowledged + in_downtime + host_state > 0 THEN state_change ELSE 0 END)',
|
||||
'services_unknown_last_state_change_handled' => 'MAX(CASE WHEN object_type = \'service\' AND state = 3 AND acknowledged + in_downtime + host_state > 0 THEN state_change ELSE 0 END)',
|
||||
'services_warning_last_state_change_unhandled' => 'MAX(CASE WHEN object_type = \'service\' AND state = 1 AND acknowledged + in_downtime + host_state = 0 THEN state_change ELSE 0 END)',
|
||||
'services_critical_last_state_change_unhandled' => 'MAX(CASE WHEN object_type = \'service\' AND state = 2 AND acknowledged + in_downtime + host_state = 0 THEN state_change ELSE 0 END)',
|
||||
'services_unknown_last_state_change_unhandled' => 'MAX(CASE WHEN object_type = \'service\' AND state = 3 AND acknowledged + in_downtime + host_state = 0 THEN state_change ELSE 0 END)',
|
||||
'servicegroup_name' => 'servicegroup_name',
|
||||
'servicegroup_alias' => 'servicegroup_alias',
|
||||
'servicegroup' => 'servicegroup'
|
||||
'services_unknown_unhandled' => 'SUM(CASE WHEN object_type = \'service\' AND state = 3 AND acknowledged + in_downtime + host_state = 0 THEN 1 ELSE 0 END)',
|
||||
'services_warning' => 'SUM(CASE WHEN object_type = \'service\' AND state = 1 THEN 1 ELSE 0 END)',
|
||||
'services_warning_handled' => 'SUM(CASE WHEN object_type = \'service\' AND state = 1 AND acknowledged + in_downtime + host_state > 0 THEN 1 ELSE 0 END)',
|
||||
'services_warning_last_state_change_handled' => 'MAX(CASE WHEN object_type = \'service\' AND state = 1 AND acknowledged + in_downtime + host_state > 0 THEN state_change ELSE 0 END)',
|
||||
'services_warning_last_state_change_unhandled' => 'MAX(CASE WHEN object_type = \'service\' AND state = 1 AND acknowledged + in_downtime + host_state = 0 THEN state_change ELSE 0 END)',
|
||||
'services_warning_unhandled' => 'SUM(CASE WHEN object_type = \'service\' AND state = 1 AND acknowledged + in_downtime + host_state = 0 THEN 1 ELSE 0 END)'
|
||||
)
|
||||
);
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected $useSubqueryCount = true;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function joinBaseTables()
|
||||
{
|
||||
$columns = array(
|
||||
|
@ -79,11 +92,11 @@ class GroupSummaryQuery extends IdoQuery
|
|||
$hosts = $this->createSubQuery(
|
||||
'Hoststatus',
|
||||
$columns + array(
|
||||
'state' => 'host_state',
|
||||
'acknowledged' => 'host_acknowledged',
|
||||
'in_downtime' => 'host_in_downtime',
|
||||
'state_change' => 'host_last_state_change',
|
||||
'severity' => 'host_severity'
|
||||
'state' => 'host_state',
|
||||
'acknowledged' => 'host_acknowledged',
|
||||
'in_downtime' => 'host_in_downtime',
|
||||
'state_change' => 'host_last_state_change',
|
||||
'severity' => 'host_severity'
|
||||
)
|
||||
);
|
||||
if (in_array('servicegroup_name', $this->desiredColumns)) {
|
||||
|
@ -101,11 +114,11 @@ class GroupSummaryQuery extends IdoQuery
|
|||
$services = $this->createSubQuery(
|
||||
'Status',
|
||||
$columns + array(
|
||||
'state' => 'service_state',
|
||||
'acknowledged' => 'service_acknowledged',
|
||||
'in_downtime' => 'service_in_downtime',
|
||||
'state_change' => 'service_last_state_change',
|
||||
'severity' => 'service_severity'
|
||||
'state' => 'service_state',
|
||||
'acknowledged' => 'service_acknowledged',
|
||||
'in_downtime' => 'service_in_downtime',
|
||||
'state_change' => 'service_last_state_change',
|
||||
'severity' => 'service_severity'
|
||||
)
|
||||
);
|
||||
$union = $this->db->select()->union(array($hosts, $services), Zend_Db_Select::SQL_UNION_ALL);
|
||||
|
|
|
@ -11,7 +11,7 @@ class HoststatusQuery extends IdoQuery
|
|||
'hosts' => array(
|
||||
'host' => 'ho.name1 COLLATE latin1_general_ci',
|
||||
'host_name' => 'ho.name1 COLLATE latin1_general_ci',
|
||||
'host_display_name' => 'h.display_name',
|
||||
'host_display_name' => 'h.display_name COLLATE latin1_general_ci',
|
||||
'host_alias' => 'h.alias',
|
||||
'host_address' => 'h.address',
|
||||
'host_ipv4' => 'INET_ATON(h.address)',
|
||||
|
@ -85,7 +85,7 @@ class HoststatusQuery extends IdoQuery
|
|||
'hostgroups' => array(
|
||||
'hostgroup' => 'hgo.name1 COLLATE latin1_general_ci',
|
||||
'hostgroup_name' => 'hgo.name1',
|
||||
'hostgroup_alias' => 'hg.alias'
|
||||
'hostgroup_alias' => 'hg.alias COLLATE latin1_general_ci'
|
||||
),
|
||||
'servicegroups' => array(
|
||||
'servicegroup' => 'sgo.name1 COLLATE latin1_general_ci',
|
||||
|
|
|
@ -36,7 +36,7 @@ class StatusQuery extends IdoQuery
|
|||
'hosts' => array(
|
||||
'host' => 'ho.name1 COLLATE latin1_general_ci',
|
||||
'host_name' => 'ho.name1',
|
||||
'host_display_name' => 'h.display_name',
|
||||
'host_display_name' => 'h.display_name COLLATE latin1_general_ci',
|
||||
'host_alias' => 'h.alias',
|
||||
'host_address' => 'h.address',
|
||||
'host_ipv4' => 'INET_ATON(h.address)',
|
||||
|
@ -162,19 +162,19 @@ class StatusQuery extends IdoQuery
|
|||
'hostgroups' => array(
|
||||
'hostgroup' => 'hgo.name1 COLLATE latin1_general_ci',
|
||||
'hostgroup_name' => 'hgo.name1',
|
||||
'hostgroup_alias' => 'hg.alias'
|
||||
'hostgroup_alias' => 'hg.alias COLLATE latin1_general_ci'
|
||||
),
|
||||
'servicegroups' => array(
|
||||
'servicegroup' => 'sgo.name1 COLLATE latin1_general_ci',
|
||||
'servicegroup_name' => 'sgo.name1',
|
||||
'servicegroup_alias' => 'sg.alias'
|
||||
'servicegroup_alias' => 'sg.alias COLLATE latin1_general_ci'
|
||||
),
|
||||
'services' => array(
|
||||
'service_host' => 'so.name1 COLLATE latin1_general_ci',
|
||||
'service_host_name' => 'so.name1',
|
||||
'service' => 'so.name2 COLLATE latin1_general_ci',
|
||||
'service_description' => 'so.name2',
|
||||
'service_display_name' => 's.display_name',
|
||||
'service_display_name' => 's.display_name COLLATE latin1_general_ci',
|
||||
'service_icon_image' => 's.icon_image',
|
||||
'service_action_url' => 's.action_url',
|
||||
'service_notes_url' => 's.notes_url',
|
||||
|
|
|
@ -375,6 +375,16 @@ abstract class DataView implements QueryInterface, IteratorAggregate
|
|||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the view's search columns
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
public function getSearchColumns()
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated(EL): Only use DataView::applyFilter() for applying filter because all other functions are missing
|
||||
* column validation.
|
||||
|
|
|
@ -126,4 +126,12 @@ class HostStatus extends DataView
|
|||
}
|
||||
return parent::isValidFilterTarget($column);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getSearchColumns()
|
||||
{
|
||||
return array('host', 'host_display_name');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,101 @@
|
|||
<?php
|
||||
/* Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */
|
||||
|
||||
namespace Icinga\Module\Monitoring\DataView;
|
||||
|
||||
/**
|
||||
* Data view for the host group summary
|
||||
*/
|
||||
class Hostgroupsummary extends DataView
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getColumns()
|
||||
{
|
||||
return array(
|
||||
'hostgroup_alias',
|
||||
'hostgroup_name',
|
||||
'hosts_down_handled',
|
||||
'hosts_down_last_state_change_handled',
|
||||
'hosts_down_last_state_change_unhandled',
|
||||
'hosts_down_unhandled',
|
||||
'hosts_pending',
|
||||
'hosts_pending_last_state_change',
|
||||
'hosts_severity',
|
||||
'hosts_total',
|
||||
'hosts_unreachable_handled',
|
||||
'hosts_unreachable_last_state_change_handled',
|
||||
'hosts_unreachable_last_state_change_unhandled',
|
||||
'hosts_unreachable_unhandled',
|
||||
'hosts_up',
|
||||
'hosts_up_last_state_change',
|
||||
'services_critical_handled',
|
||||
'services_critical_unhandled',
|
||||
'services_ok',
|
||||
'services_pending',
|
||||
'services_total',
|
||||
'services_unknown_handled',
|
||||
'services_unknown_unhandled',
|
||||
'services_warning_handled',
|
||||
'services_warning_unhandled'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getFilterColumns()
|
||||
{
|
||||
return array('hostgroup');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function getQueryName()
|
||||
{
|
||||
return 'groupsummary';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getSearchColumns()
|
||||
{
|
||||
return array('hostgroup', 'hostgroup_alias');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getSortRules()
|
||||
{
|
||||
return array(
|
||||
'hostgroup_alias' => array(
|
||||
'order' => self::SORT_ASC
|
||||
),
|
||||
'hosts_severity' => array(
|
||||
'columns' => array(
|
||||
'hosts_severity',
|
||||
'hostgroup_alias ASC'
|
||||
),
|
||||
'order' => self::SORT_DESC
|
||||
),
|
||||
'hosts_total' => array(
|
||||
'columns' => array(
|
||||
'hosts_total',
|
||||
'hostgroup_alias ASC'
|
||||
),
|
||||
'order' => self::SORT_ASC
|
||||
),
|
||||
'services_total' => array(
|
||||
'columns' => array(
|
||||
'services_total',
|
||||
'hostgroup_alias ASC'
|
||||
),
|
||||
'order' => self::SORT_ASC
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
|
@ -185,4 +185,12 @@ class ServiceStatus extends DataView
|
|||
}
|
||||
return parent::isValidFilterTarget($column);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getSearchColumns()
|
||||
{
|
||||
return array('service', 'service_display_name');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,71 +3,90 @@
|
|||
|
||||
namespace Icinga\Module\Monitoring\DataView;
|
||||
|
||||
class Groupsummary extends DataView
|
||||
class Servicegroupsummary extends DataView
|
||||
{
|
||||
/**
|
||||
* Retrieve columns provided by this view
|
||||
*
|
||||
* @return array
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getColumns()
|
||||
{
|
||||
return array(
|
||||
'servicegroup_name',
|
||||
'servicegroup_alias',
|
||||
'hostgroup_name',
|
||||
'hostgroup_alias',
|
||||
'hosts_total',
|
||||
'hosts_up',
|
||||
'hosts_unreachable',
|
||||
'hosts_unreachable_handled',
|
||||
'hosts_unreachable_unhandled',
|
||||
'hosts_down',
|
||||
'hosts_down_handled',
|
||||
'hosts_down_unhandled',
|
||||
'hosts_pending',
|
||||
'hosts_up_last_state_change',
|
||||
'hosts_pending_last_state_change',
|
||||
'hosts_down_last_state_change_handled',
|
||||
'hosts_unreachable_last_state_change_handled',
|
||||
'hosts_down_last_state_change_unhandled',
|
||||
'hosts_unreachable_last_state_change_unhandled',
|
||||
'services_total',
|
||||
'services_ok',
|
||||
'services_unknown',
|
||||
'services_unknown_handled',
|
||||
'services_unknown_unhandled',
|
||||
'services_critical',
|
||||
'hosts_unreachable_handled',
|
||||
'hosts_unreachable_unhandled',
|
||||
'hosts_up',
|
||||
'servicegroup_alias',
|
||||
'servicegroup_name',
|
||||
'services_critical_handled',
|
||||
'services_critical_unhandled',
|
||||
'services_warning',
|
||||
'services_warning_handled',
|
||||
'services_warning_unhandled',
|
||||
'services_pending',
|
||||
'services_severity',
|
||||
'services_ok_last_state_change',
|
||||
'services_pending_last_state_change',
|
||||
'services_warning_last_state_change_handled',
|
||||
'services_critical_last_state_change_handled',
|
||||
'services_unknown_last_state_change_handled',
|
||||
'services_warning_last_state_change_unhandled',
|
||||
'services_critical_last_state_change_unhandled',
|
||||
'services_unknown_last_state_change_unhandled'
|
||||
'services_critical_unhandled',
|
||||
'services_ok',
|
||||
'services_ok_last_state_change',
|
||||
'services_pending',
|
||||
'services_pending_last_state_change',
|
||||
'services_severity',
|
||||
'services_total',
|
||||
'services_unknown_handled',
|
||||
'services_unknown_last_state_change_handled',
|
||||
'services_unknown_last_state_change_unhandled',
|
||||
'services_unknown_unhandled',
|
||||
'services_warning_handled',
|
||||
'services_warning_last_state_change_handled',
|
||||
'services_warning_last_state_change_unhandled',
|
||||
'services_warning_unhandled'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getFilterColumns()
|
||||
{
|
||||
return array('servicegroup');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function getQueryName()
|
||||
{
|
||||
return 'groupsummary';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getSearchColumns()
|
||||
{
|
||||
return array('servicegroup', 'servicegroup_alias');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getSortRules()
|
||||
{
|
||||
return array(
|
||||
'servicegroup_alias' => array(
|
||||
'order' => self::SORT_ASC
|
||||
),
|
||||
'services_severity' => array(
|
||||
'columns' => array('services_severity'),
|
||||
'order' => self::SORT_DESC
|
||||
'columns' => array(
|
||||
'services_severity',
|
||||
'servicegroup_alias ASC'
|
||||
),
|
||||
'order' => self::SORT_DESC
|
||||
),
|
||||
'services_total' => array(
|
||||
'columns' => array(
|
||||
'services_total',
|
||||
'servicegroup_alias ASC'
|
||||
),
|
||||
'order' => self::SORT_ASC
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function getFilterColumns()
|
||||
{
|
||||
return array('hostgroup', 'servicegroup');
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue