Deduplicate state summary
Use existing partials for rendering the state summary instead of a new one. refs #8565
This commit is contained in:
parent
9c45e99b57
commit
1cfcb934b0
|
@ -110,16 +110,7 @@ class Monitoring_HostsController extends Controller
|
|||
$acknowledgedObjects = array();
|
||||
$objectsInDowntime = array();
|
||||
$downtimeFilterExpressions = array();
|
||||
$hostStates = array(
|
||||
'hosts_' . Host::getStateText(Host::STATE_UP) => 0,
|
||||
'hosts_' . Host::getStateText(Host::STATE_UP) . '_unhandled' => 0,
|
||||
'hosts_' . Host::getStateText(Host::STATE_DOWN) => 0,
|
||||
'hosts_' . Host::getStateText(Host::STATE_DOWN) . '_unhandled' => 0,
|
||||
'hosts_' . Host::getStateText(Host::STATE_UNREACHABLE) => 0,
|
||||
'hosts_' . Host::getStateText(Host::STATE_UNREACHABLE) . '_unhandled' => 0,
|
||||
'hosts_' . Host::getStateText(Host::STATE_PENDING) => 0,
|
||||
'hosts_' . Host::getStateText(Host::STATE_PENDING) . '_unhandled' => 0,
|
||||
);
|
||||
|
||||
foreach ($this->hostList as $host) {
|
||||
/** @var Host $host */
|
||||
$unhandled = (bool) $host->problem === true && (bool) $host->handled === false;
|
||||
|
@ -134,7 +125,6 @@ class Monitoring_HostsController extends Controller
|
|||
$objectsInDowntime[] = $host;
|
||||
$downtimeFilterExpressions[] = Filter::where('downtime_host', $host->getName());
|
||||
}
|
||||
++$hostStates['hosts_' . $host::getStateText($host->state) . ($unhandled ? '_unhandled' : '')];
|
||||
}
|
||||
if (! empty($acknowledgedObjects)) {
|
||||
$removeAckForm = new RemoveAcknowledgementCommandForm();
|
||||
|
@ -150,7 +140,7 @@ class Monitoring_HostsController extends Controller
|
|||
$this->view->processCheckResultAllLink = Url::fromRequest()->setPath('monitoring/hosts/process-check-result');
|
||||
$this->view->addCommentLink = Url::fromRequest()->setPath('monitoring/hosts/add-comment');
|
||||
$this->view->deleteCommentLink = Url::fromRequest()->setPath('monitoring/hosts/delete-comment');
|
||||
$this->view->hostStates = (object)$hostStates;
|
||||
$this->view->stats = (object)$this->hostList->getStateSummary();
|
||||
$this->view->objects = $this->hostList;
|
||||
$this->view->unhandledObjects = $unhandledObjects;
|
||||
$unhandledFilterQueryString = Filter::matchAny($unhandledFilterExpressions)->toQueryString();
|
||||
|
|
|
@ -132,35 +132,10 @@ class Monitoring_ServicesController extends Controller
|
|||
$acknowledgedObjects = array();
|
||||
$objectsInDowntime = array();
|
||||
$downtimeFilterExpressions = array();
|
||||
$serviceStates = array(
|
||||
'services_' . Service::getStateText(Service::STATE_OK) => 0,
|
||||
'services_' . Service::getStateText(Service::STATE_OK) . '_unhandled' => 0,
|
||||
'services_' . Service::getStateText(Service::STATE_WARNING) => 0,
|
||||
'services_' . Service::getStateText(Service::STATE_WARNING) . '_unhandled' => 0,
|
||||
'services_' . Service::getStateText(Service::STATE_CRITICAL) => 0,
|
||||
'services_' . Service::getStateText(Service::STATE_CRITICAL) . '_unhandled' => 0,
|
||||
'services_' . Service::getStateText(Service::STATE_UNKNOWN) => 0,
|
||||
'services_' . Service::getStateText(Service::STATE_UNKNOWN) . '_unhandled' => 0,
|
||||
'services_' . Service::getStateText(Service::STATE_PENDING) => 0,
|
||||
'services_' . Service::getStateText(Service::STATE_PENDING) . '_unhandled' => 0
|
||||
);
|
||||
$knownHostStates = array();
|
||||
$hostStates = array(
|
||||
'hosts_' . Host::getStateText(Host::STATE_UP) => 0,
|
||||
'hosts_' . Host::getStateText(Host::STATE_UP) . '_unhandled' => 0,
|
||||
'hosts_' . Host::getStateText(Host::STATE_DOWN) => 0,
|
||||
'hosts_' . Host::getStateText(Host::STATE_DOWN) . '_unhandled' => 0,
|
||||
'hosts_' . Host::getStateText(Host::STATE_UNREACHABLE) => 0,
|
||||
'hosts_' . Host::getStateText(Host::STATE_UNREACHABLE) . '_unhandled' => 0,
|
||||
'hosts_' . Host::getStateText(Host::STATE_PENDING) => 0,
|
||||
'hosts_' . Host::getStateText(Host::STATE_PENDING) . '_unhandled' => 0
|
||||
);
|
||||
foreach ($this->serviceList as $service) {
|
||||
$unhandled = false;
|
||||
|
||||
foreach ($this->serviceList as $service) {
|
||||
/** @var Service $service */
|
||||
if ((bool) $service->problem === true && (bool) $service->handled === false) {
|
||||
$unhandled = true;
|
||||
$unhandledObjects[] = $service;
|
||||
$unhandledFilterExpressions[] = Filter::matchAll(
|
||||
Filter::where('host', $service->getHost()->getName()),
|
||||
|
@ -177,12 +152,6 @@ class Monitoring_ServicesController extends Controller
|
|||
Filter::where('downtime_service', $service->getName())
|
||||
);
|
||||
}
|
||||
|
||||
++$serviceStates['services_' . $service::getStateText($service->state) . ($unhandled ? '_unhandled' : '')];
|
||||
if (! isset($knownHostStates[$service->getHost()->getName()])) {
|
||||
$knownHostStates[$service->getHost()->getName()] = true;
|
||||
++$hostStates['hosts_' . $service->getHost()->getStateText($service->host_state)];
|
||||
}
|
||||
}
|
||||
if (! empty($acknowledgedObjects)) {
|
||||
$removeAckForm = new RemoveAcknowledgementCommandForm();
|
||||
|
@ -208,8 +177,7 @@ class Monitoring_ServicesController extends Controller
|
|||
);
|
||||
$this->view->addCommentLink = Url::fromRequest()->setPath('monitoring/services/add-comment');
|
||||
$this->view->deleteCommentLink = Url::fromRequest()->setPath('monitoring/services/delete-comment');
|
||||
$this->view->hostStates = (object)$hostStates;
|
||||
$this->view->serviceStates = (object)$serviceStates;
|
||||
$this->view->stats = $this->serviceList->getStateSummary();
|
||||
$this->view->objects = $this->serviceList;
|
||||
$this->view->unhandledObjects = $unhandledObjects;
|
||||
$unhandledFilterQueryString = Filter::matchAny($unhandledFilterExpressions)->toQueryString();
|
||||
|
|
|
@ -8,7 +8,7 @@ use Icinga\Module\Monitoring\Forms\Command\Object\DeleteCommentCommandForm;
|
|||
<?= $tabs; ?>
|
||||
<?php endif ?>
|
||||
|
||||
<?= $this->render('partials/host/objects-tinysummary.phtml') ?>
|
||||
<?= $this->render('list/components/hostssummary.phtml') ?>
|
||||
<?= $this->render('partials/host/objects-header.phtml'); ?>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
<?php
|
||||
use Icinga\Web\Url;
|
||||
?>
|
||||
|
||||
<h1 class="tinystatesummary">
|
||||
<?= $this->qlink(
|
||||
sprintf($this->translate('%d Hosts Selected:'), count($objects)),
|
||||
$listAllLink
|
||||
); ?>
|
||||
|
||||
<span class="badges">
|
||||
<?php if ($hostStates->hosts_up): ?>
|
||||
|
||||
<?php $selfUrl = Url::fromPath('monitoring/list/hosts'); ?>
|
||||
<span class="state up"><b>
|
||||
<?= $hostStates->hosts_up ?>
|
||||
</b></span>
|
||||
<?php endif ?>
|
||||
|
||||
|
||||
<?php
|
||||
foreach (
|
||||
array(
|
||||
1 => 'down',
|
||||
2 => 'unreachable',
|
||||
99 => 'pending'
|
||||
) as $stateId => $state) {
|
||||
|
||||
$stateName = 'hosts_' . $state;
|
||||
$unhandledStateName = $stateName . '_unhandled';
|
||||
if ($hostStates->$unhandledStateName) {
|
||||
echo '<span class="state ' . $state . '"><b>' . $hostStates->$unhandledStateName . '</b>';
|
||||
}
|
||||
if ($hostStates->$stateName) {
|
||||
echo '<span class="state ' . $state . ' handled"><b>' . $hostStates->$stateName . '</b></span>';
|
||||
}
|
||||
if ($hostStates->$unhandledStateName) {
|
||||
echo '</span>';
|
||||
}
|
||||
$stateName .= '_unhandled';
|
||||
}?>
|
||||
|
||||
</span>
|
||||
</h1>
|
|
@ -1,42 +0,0 @@
|
|||
<?php
|
||||
use Icinga\Web\Url;
|
||||
?>
|
||||
|
||||
<h1 class="tinystatesummary">
|
||||
<?= $this->qlink(
|
||||
sprintf($this->translate('%d Services Selected:'), count($objects)),
|
||||
$listAllLink
|
||||
); ?>
|
||||
|
||||
<span class="badges">
|
||||
<?php if ($serviceStates->services_ok): ?>
|
||||
<?php $selfUrl = Url::fromPath('monitoring/list/services'); ?>
|
||||
<span class="state ok"><b>
|
||||
<?= $serviceStates->services_ok ?>
|
||||
</b></span>
|
||||
<?php endif ?>
|
||||
|
||||
<?php
|
||||
foreach (
|
||||
array(
|
||||
2 => 'critical',
|
||||
3 => 'unknown',
|
||||
1 => 'warning',
|
||||
4 => 'pending'
|
||||
) as $stateId => $state) {
|
||||
|
||||
$stateName = 'services_' . $state;
|
||||
$unhandledStateName = $stateName . '_unhandled';
|
||||
if ($serviceStates->$unhandledStateName) {
|
||||
echo '<span class="state ' . $state . '"><b>' . $serviceStates->$unhandledStateName . '</b>';
|
||||
}
|
||||
if ($serviceStates->$stateName) {
|
||||
echo '<span class="state ' . $state . ' handled"><b>' . $serviceStates->$stateName . '</b></span>';
|
||||
}
|
||||
if ($serviceStates->$unhandledStateName) {
|
||||
echo '</span>';
|
||||
}
|
||||
$stateName .= '_unhandled';
|
||||
}?>
|
||||
</span>
|
||||
</h1>
|
|
@ -8,7 +8,7 @@ use Icinga\Module\Monitoring\Forms\Command\Object\DeleteCommentCommandForm;
|
|||
<?= $tabs; ?>
|
||||
<?php endif ?>
|
||||
|
||||
<?= $this->render('partials/service/objects-tinysummary.phtml') ?>
|
||||
<?= $this->render('list/components/servicesummary.phtml') ?>
|
||||
<?= $this->render('partials/service/objects-header.phtml'); ?>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -25,4 +25,31 @@ class HostList extends ObjectList
|
|||
}
|
||||
return $hosts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a state summary of all hosts that can be consumed by hostssummary.phtml
|
||||
*
|
||||
* @return object The summary
|
||||
*/
|
||||
public function getStateSummary()
|
||||
{
|
||||
$hostStates = $this->prepareStateNames('hosts_', array(
|
||||
Host::getStateText(Host::STATE_UP),
|
||||
Host::getStateText(Host::STATE_DOWN),
|
||||
Host::getStateText(Host::STATE_UNREACHABLE),
|
||||
Host::getStateText(Host::STATE_PENDING)
|
||||
));
|
||||
|
||||
foreach ($this as $host) {
|
||||
$unhandled = (bool) $host->problem === true && (bool) $host->handled === false;
|
||||
|
||||
$stateName = 'hosts_' . $host::getStateText($host->state);
|
||||
++$hostStates[$stateName];
|
||||
++$hostStates[$stateName. ($unhandled ? '_unhandled' : '_handled')];
|
||||
}
|
||||
|
||||
$hostStates['hosts_total'] = count($this);
|
||||
|
||||
return (object)$hostStates;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -85,4 +85,15 @@ abstract class ObjectList implements Countable, IteratorAggregate
|
|||
{
|
||||
return $this->backend->select()->from('comment')->applyFilter($this->filter);
|
||||
}
|
||||
|
||||
protected function prepareStateNames($prefix, array $names) {
|
||||
$new = array();
|
||||
foreach ($names as $name) {
|
||||
$new[$prefix . $name] = 0;
|
||||
$new[$prefix . $name . '_handled'] = 0;
|
||||
$new[$prefix . $name . '_unhandled'] = 0;
|
||||
}
|
||||
$new[$prefix . 'total'] = 0;
|
||||
return $new;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,4 +25,46 @@ class ServiceList extends ObjectList
|
|||
}
|
||||
return $services;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a state summary of all services that can be consumed by servicesummary.phtml
|
||||
*
|
||||
* @return object The summary
|
||||
*/
|
||||
public function getStateSummary()
|
||||
{
|
||||
$serviceStates = $this->prepareStateNames('services_', array(
|
||||
Service::getStateText(Service::STATE_OK),
|
||||
Service::getStateText(Service::STATE_WARNING),
|
||||
Service::getStateText(Service::STATE_CRITICAL),
|
||||
Service::getStateText(Service::STATE_UNKNOWN),
|
||||
Service::getStateText(Service::STATE_PENDING),
|
||||
));
|
||||
|
||||
$hostStates = $this->prepareStateNames('hosts_', array(
|
||||
Host::getStateText(Host::STATE_UP),
|
||||
Host::getStateText(Host::STATE_DOWN),
|
||||
Host::getStateText(Host::STATE_UNREACHABLE),
|
||||
Host::getStateText(Host::STATE_PENDING),
|
||||
));
|
||||
|
||||
foreach ($this as $service) {
|
||||
$unhandled = false;
|
||||
if ((bool) $service->problem === true && (bool) $service->handled === false) {
|
||||
$unhandled = true;
|
||||
}
|
||||
|
||||
$stateName = 'services_' . $service::getStateText($service->state);
|
||||
++$serviceStates[$stateName];
|
||||
++$serviceStates[$stateName . ($unhandled ? '_unhandled' : '_handled')];
|
||||
if (! isset($knownHostStates[$service->getHost()->getName()])) {
|
||||
$knownHostStates[$service->getHost()->getName()] = true;
|
||||
++$hostStates['hosts_' . $service->getHost()->getStateText($service->host_state)];
|
||||
}
|
||||
}
|
||||
|
||||
$serviceStates['services_total'] = count($this);
|
||||
|
||||
return (object)$serviceStates;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue