mirror of
https://github.com/Icinga/icingaweb2-module-businessprocess.git
synced 2025-12-25 00:59:34 -05:00
The critical count badge of `Business Process` menu section represent number configs that are in critical state. The critical count badge of configs sub section under represent number of critical root nodes of that specific config.
53 lines
1.6 KiB
PHP
53 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Icinga\Module\Businessprocess\Web\Navigation\Renderer;
|
|
|
|
use Icinga\Application\Modules\Module;
|
|
use Icinga\Module\Businessprocess\ProvidedHook\Icingadb\IcingadbSupport;
|
|
use Icinga\Module\Businessprocess\State\IcingaDbState;
|
|
use Icinga\Module\Businessprocess\State\MonitoringState;
|
|
use Icinga\Module\Businessprocess\Storage\LegacyStorage;
|
|
use Icinga\Web\Navigation\Renderer\BadgeNavigationItemRenderer;
|
|
|
|
class ProcessesProblemsBadge extends BadgeNavigationItemRenderer
|
|
{
|
|
/**
|
|
* Cached count
|
|
*
|
|
* @var int
|
|
*/
|
|
protected $count;
|
|
|
|
public function getCount()
|
|
{
|
|
if ($this->count === null) {
|
|
$storage = LegacyStorage::getInstance();
|
|
$count = 0;
|
|
|
|
foreach ($storage->listProcessNames() as $processName) {
|
|
$bp = $storage->loadProcess($processName);
|
|
if (Module::exists('icingadb') &&
|
|
(! $bp->hasBackendName() && IcingadbSupport::useIcingaDbAsBackend())
|
|
) {
|
|
IcingaDbState::apply($bp);
|
|
} else {
|
|
MonitoringState::apply($bp);
|
|
}
|
|
|
|
foreach ($bp->getRootNodes() as $rootNode) {
|
|
if (! $rootNode->isEmpty() &&
|
|
$rootNode->getState() !== $rootNode::ICINGA_PENDING
|
|
&& $rootNode->hasProblems()) {
|
|
$count++;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
$this->count = $count;
|
|
$this->setState(self::STATE_CRITICAL);
|
|
}
|
|
|
|
return $this->count;
|
|
}
|
|
}
|