mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-07-26 07:14:35 +02:00
Merge pull request #4660 from Icinga/fix/unhandled-service-counter-not-always-visible-3921
Drop the unhandled services counter in host lists
This commit is contained in:
commit
00353a1f25
@ -109,12 +109,8 @@ class ListController extends Controller
|
|||||||
));
|
));
|
||||||
$this->applyRestriction('monitoring/filter/objects', $stats);
|
$this->applyRestriction('monitoring/filter/objects', $stats);
|
||||||
|
|
||||||
$summary = $hosts->getQuery()->queryServiceProblemSummary();
|
|
||||||
$this->applyRestriction('monitoring/filter/objects', $summary);
|
|
||||||
|
|
||||||
$this->view->hosts = $hosts;
|
$this->view->hosts = $hosts;
|
||||||
$this->view->stats = $stats;
|
$this->view->stats = $stats;
|
||||||
$this->view->summary = $summary->fetchPairs();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -60,33 +60,6 @@ if (! $this->compact): ?>
|
|||||||
'class' => 'rowaction'
|
'class' => 'rowaction'
|
||||||
)
|
)
|
||||||
) ?>
|
) ?>
|
||||||
<?php if (isset($summary[$host->host_name])): ?>
|
|
||||||
<span class="host-services-incidents"> (<?= $this->qlink(
|
|
||||||
sprintf(
|
|
||||||
$this->translatePlural(
|
|
||||||
'%u unhandled service', '%u unhandled services', $summary[$host->host_name]
|
|
||||||
),
|
|
||||||
$summary[$host->host_name]
|
|
||||||
),
|
|
||||||
'monitoring/list/services',
|
|
||||||
array(
|
|
||||||
'host' => $host->host_name,
|
|
||||||
'service_problem' => 1,
|
|
||||||
'service_handled' => 0
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
'title' => sprintf(
|
|
||||||
$this->translatePlural(
|
|
||||||
'List %s unhandled service problem on host %s',
|
|
||||||
'List %s unhandled service problems on host %s',
|
|
||||||
$summary[$host->host_name]
|
|
||||||
),
|
|
||||||
$summary[$host->host_name],
|
|
||||||
$host->host_name
|
|
||||||
)
|
|
||||||
)
|
|
||||||
) ?>)</span>
|
|
||||||
<?php endif ?>
|
|
||||||
<span class="state-icons"><?= $this->hostFlags($host) ?></span>
|
<span class="state-icons"><?= $this->hostFlags($host) ?></span>
|
||||||
</div>
|
</div>
|
||||||
<p class="overview-plugin-output"><?= $this->pluginOutput($this->ellipsis($host->host_output, 10000), true, $host->host_check_command) ?></p>
|
<p class="overview-plugin-output"><?= $this->pluginOutput($this->ellipsis($host->host_output, 10000), true, $host->host_check_command) ?></p>
|
||||||
|
@ -1,155 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* Icinga Web 2 | (c) 2015 Icinga Development Team | GPLv2+ */
|
|
||||||
|
|
||||||
namespace Icinga\Module\Monitoring\Backend\Ido\Query;
|
|
||||||
|
|
||||||
class HostserviceproblemsummaryQuery extends IdoQuery
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
protected $allowCustomVars = true;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The HoststatusQuery in use
|
|
||||||
*
|
|
||||||
* @var HoststatusQuery
|
|
||||||
*/
|
|
||||||
protected $hostStatusQuery;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
protected $columnMap = array(
|
|
||||||
'instances' => array(
|
|
||||||
'instance_name' => 'i.instance_name'
|
|
||||||
),
|
|
||||||
'services' => array(
|
|
||||||
'host_name' => 'so.name1',
|
|
||||||
'service_description' => 'so.name2'
|
|
||||||
),
|
|
||||||
'hostgroups' => array(
|
|
||||||
'hostgroup_name' => 'hgo.name1'
|
|
||||||
),
|
|
||||||
'servicegroups' => array(
|
|
||||||
'servicegroup_name' => 'sgo.name1'
|
|
||||||
),
|
|
||||||
'problemsummary' => array(
|
|
||||||
'unhandled_service_count' => 'SUM(
|
|
||||||
CASE
|
|
||||||
WHEN (ss.problem_has_been_acknowledged + ss.scheduled_downtime_depth + COALESCE(hs.current_state, 0)) > 0
|
|
||||||
THEN 0
|
|
||||||
ELSE 1
|
|
||||||
END
|
|
||||||
)'
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the HoststatusQuery to use
|
|
||||||
*
|
|
||||||
* @param HoststatusQuery $query
|
|
||||||
*
|
|
||||||
* @return $this
|
|
||||||
*/
|
|
||||||
public function setHoststatusQuery(HoststatusQuery $query)
|
|
||||||
{
|
|
||||||
$this->hostStatusQuery = clone $query;
|
|
||||||
$this->hostStatusQuery
|
|
||||||
->clearOrder()
|
|
||||||
->setIsSubQuery()
|
|
||||||
->columns(array('object_id'));
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritdoc}
|
|
||||||
*/
|
|
||||||
protected function joinBaseTables()
|
|
||||||
{
|
|
||||||
$this->select->from(
|
|
||||||
array('so' => $this->prefix . 'objects'),
|
|
||||||
array()
|
|
||||||
)->join(
|
|
||||||
array('s' => $this->prefix . 'services'),
|
|
||||||
's.service_object_id = so.object_id AND so.is_active = 1',
|
|
||||||
array()
|
|
||||||
);
|
|
||||||
$this->select->group('so.name1');
|
|
||||||
$this->joinedVirtualTables['services'] = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Join instances
|
|
||||||
*/
|
|
||||||
protected function joinInstances()
|
|
||||||
{
|
|
||||||
$this->select->join(
|
|
||||||
array('i' => $this->prefix . 'instances'),
|
|
||||||
'i.instance_id = so.instance_id',
|
|
||||||
array()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Join host groups
|
|
||||||
*/
|
|
||||||
protected function joinHostgroups()
|
|
||||||
{
|
|
||||||
$this->select->joinLeft(
|
|
||||||
array('hgm' => $this->prefix . 'hostgroup_members'),
|
|
||||||
'hgm.host_object_id = s.host_object_id',
|
|
||||||
array()
|
|
||||||
)->joinLeft(
|
|
||||||
array('hg' => $this->prefix . 'hostgroups'),
|
|
||||||
'hg.hostgroup_id = hgm.hostgroup_id',
|
|
||||||
array()
|
|
||||||
)->joinLeft(
|
|
||||||
array('hgo' => $this->prefix . 'objects'),
|
|
||||||
'hgo.object_id = hg.hostgroup_object_id AND hgo.is_active = 1 AND hgo.objecttype_id = 3',
|
|
||||||
array()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Join service groups
|
|
||||||
*/
|
|
||||||
protected function joinServicegroups()
|
|
||||||
{
|
|
||||||
$this->select->joinLeft(
|
|
||||||
array('sgm' => $this->prefix . 'servicegroup_members'),
|
|
||||||
'sgm.service_object_id = so.object_id',
|
|
||||||
array()
|
|
||||||
)->joinLeft(
|
|
||||||
array('sg' => $this->prefix . 'servicegroups'),
|
|
||||||
'sgm.servicegroup_id = sg.servicegroup_id',
|
|
||||||
array()
|
|
||||||
)->joinLeft(
|
|
||||||
array('sgo' => $this->prefix . 'objects'),
|
|
||||||
'sgo.object_id = sg.servicegroup_object_id AND sgo.is_active = 1 AND sgo.objecttype_id = 4',
|
|
||||||
array()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Join the statussummary
|
|
||||||
*/
|
|
||||||
protected function joinProblemsummary()
|
|
||||||
{
|
|
||||||
$this->select->join(
|
|
||||||
array('ss' => $this->prefix . 'servicestatus'),
|
|
||||||
'ss.service_object_id = so.object_id AND ss.current_state > 0',
|
|
||||||
array()
|
|
||||||
)->join(
|
|
||||||
array('hs' => $this->prefix . 'hoststatus'),
|
|
||||||
'hs.host_object_id = s.host_object_id',
|
|
||||||
array()
|
|
||||||
)->join(
|
|
||||||
array('h' => $this->hostStatusQuery),
|
|
||||||
'h.object_id = s.host_object_id',
|
|
||||||
array()
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->select->having($this->getMappedField('unhandled_service_count') . ' > 0');
|
|
||||||
}
|
|
||||||
}
|
|
@ -321,21 +321,6 @@ class HoststatusQuery extends IdoQuery
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Query the service problem summary for all hosts of this query's result set
|
|
||||||
*
|
|
||||||
* @return HostserviceproblemsummaryQuery
|
|
||||||
*/
|
|
||||||
public function queryServiceProblemSummary()
|
|
||||||
{
|
|
||||||
return $this->createSubQuery('Hostserviceproblemsummary')
|
|
||||||
->setHostStatusQuery($this)
|
|
||||||
->columns(array(
|
|
||||||
'host_name',
|
|
||||||
'unhandled_service_count'
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function joinSubQuery(IdoQuery $query, $name, $filter, $and, $negate, &$additionalFilter)
|
protected function joinSubQuery(IdoQuery $query, $name, $filter, $and, $negate, &$additionalFilter)
|
||||||
{
|
{
|
||||||
if ($name === 'hostgroup') {
|
if ($name === 'hostgroup') {
|
||||||
|
@ -63,13 +63,6 @@
|
|||||||
font-size: @font-size-small;
|
font-size: @font-size-small;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Link to unhandled services in the hosts overview
|
|
||||||
.host-services-incidents {
|
|
||||||
color: @color-critical;
|
|
||||||
font-family: @font-family-wide;
|
|
||||||
font-size: @font-size-small;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Notification recipient in the notifications overview
|
// Notification recipient in the notifications overview
|
||||||
.notification-recipient {
|
.notification-recipient {
|
||||||
color: @text-color-light;
|
color: @text-color-light;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user