summaryrefslogtreecommitdiffstats
path: root/application/controllers/DaemonController.php
diff options
context:
space:
mode:
Diffstat (limited to 'application/controllers/DaemonController.php')
-rw-r--r--application/controllers/DaemonController.php64
1 files changed, 64 insertions, 0 deletions
diff --git a/application/controllers/DaemonController.php b/application/controllers/DaemonController.php
new file mode 100644
index 0000000..ab0038f
--- /dev/null
+++ b/application/controllers/DaemonController.php
@@ -0,0 +1,64 @@
+<?php
+
+namespace Icinga\Module\Director\Controllers;
+
+use gipfl\Web\Widget\Hint;
+use Icinga\Application\Icinga;
+use Icinga\Module\Director\Daemon\RunningDaemonInfo;
+use Icinga\Module\Director\Web\Tabs\MainTabs;
+use Icinga\Module\Director\Web\Controller\ActionController;
+use Icinga\Module\Director\Web\Widget\BackgroundDaemonDetails;
+use Icinga\Module\Director\Web\Widget\Documentation;
+use ipl\Html\Html;
+
+class DaemonController extends ActionController
+{
+ public function indexAction()
+ {
+ $this->setAutorefreshInterval(10);
+ $this->tabs(new MainTabs($this->Auth(), $this->getDbResourceName()))->activate('daemon');
+ $this->setTitle($this->translate('Director Background Daemon'));
+ // Avoiding layout issues:
+ $this->content()->add(Html::tag('h1', $this->translate('Director Background Daemon')));
+ // TODO: move dashboard titles into controls. Or figure out whether 2.7 "broke" this
+
+ $error = null;
+ try {
+ $db = $this->db()->getDbAdapter();
+ $daemons = $db->fetchAll(
+ $db->select()->from('director_daemon_info')->order('fqdn')->order('username')->order('pid')
+ );
+ } catch (\Exception $e) {
+ $daemons = [];
+ $error = $e->getMessage();
+ }
+
+ if (empty($daemons)) {
+ $documentation = new Documentation(Icinga::app(), $this->Auth());
+ $message = Html::sprintf($this->translate(
+ 'The Icinga Director Background Daemon is not running.'
+ . ' Please check our %s in case you need step by step instructions'
+ . ' showing you how to fix this.'
+ ), $documentation->getModuleLink(
+ $this->translate('documentation'),
+ 'director',
+ '75-Background-Daemon',
+ $this->translate('Icinga Director Background Daemon')
+ ));
+ $this->content()->add(Hint::error([
+ $message,
+ ($error ? [Html::tag('br'), Html::tag('strong', $error)] : null),
+ ]));
+ return;
+ }
+
+ try {
+ foreach ($daemons as $daemon) {
+ $info = new RunningDaemonInfo($daemon);
+ $this->content()->add([new BackgroundDaemonDetails($info, $daemon) /*, $logWindow*/]);
+ }
+ } catch (\Exception $e) {
+ $this->content()->add(Hint::error($e->getMessage()));
+ }
+ }
+}