summaryrefslogtreecommitdiffstats
path: root/library/Businessprocess/Web/Navigation
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-14 13:15:40 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-14 13:15:40 +0000
commitb7fd908d538ed19fe41f03c0a3f93351d8da64e9 (patch)
tree46e14f318948cd4f5d7e874f83e7dfcc5d42fc64 /library/Businessprocess/Web/Navigation
parentInitial commit. (diff)
downloadicingaweb2-module-businessprocess-b7fd908d538ed19fe41f03c0a3f93351d8da64e9.tar.xz
icingaweb2-module-businessprocess-b7fd908d538ed19fe41f03c0a3f93351d8da64e9.zip
Adding upstream version 2.5.0.upstream/2.5.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'library/Businessprocess/Web/Navigation')
-rw-r--r--library/Businessprocess/Web/Navigation/Renderer/ProcessProblemsBadge.php59
-rw-r--r--library/Businessprocess/Web/Navigation/Renderer/ProcessesProblemsBadge.php53
2 files changed, 112 insertions, 0 deletions
diff --git a/library/Businessprocess/Web/Navigation/Renderer/ProcessProblemsBadge.php b/library/Businessprocess/Web/Navigation/Renderer/ProcessProblemsBadge.php
new file mode 100644
index 0000000..575dc5e
--- /dev/null
+++ b/library/Businessprocess/Web/Navigation/Renderer/ProcessProblemsBadge.php
@@ -0,0 +1,59 @@
+<?php
+
+namespace Icinga\Module\Businessprocess\Web\Navigation\Renderer;
+
+use Icinga\Module\Businessprocess\Storage\LegacyStorage;
+use Icinga\Web\Navigation\Renderer\BadgeNavigationItemRenderer;
+
+class ProcessProblemsBadge extends BadgeNavigationItemRenderer
+{
+ /**
+ * Cached count
+ *
+ * @var int
+ */
+ protected $count;
+
+ /** @var string */
+ private $bpConfigName;
+
+ public function getCount()
+ {
+ $count = 0;
+ if ($this->count === null) {
+ $storage = LegacyStorage::getInstance();
+ $bp = $storage->loadProcess($this->getBpConfigName());
+ foreach ($bp->getRootNodes() as $rootNode) {
+ if (! $rootNode->isEmpty() &&
+ $rootNode->getState() !== $rootNode::ICINGA_PENDING
+ && $rootNode->hasProblems()) {
+ $count++;
+ }
+ }
+
+ $this->count = $count;
+ $this->setState(self::STATE_CRITICAL);
+ }
+
+ if ($count) {
+ $this->setTitle(sprintf(
+ tp('One unhandled root node critical', '%d unhandled root nodes critical', $count),
+ $count
+ ));
+ }
+
+ return $this->count;
+ }
+
+ public function setBpConfigName($bpConfigName)
+ {
+ $this->bpConfigName = $bpConfigName;
+
+ return $this;
+ }
+
+ public function getBpConfigName()
+ {
+ return $this->bpConfigName;
+ }
+}
diff --git a/library/Businessprocess/Web/Navigation/Renderer/ProcessesProblemsBadge.php b/library/Businessprocess/Web/Navigation/Renderer/ProcessesProblemsBadge.php
new file mode 100644
index 0000000..dd419a2
--- /dev/null
+++ b/library/Businessprocess/Web/Navigation/Renderer/ProcessesProblemsBadge.php
@@ -0,0 +1,53 @@
+<?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;
+ }
+}