From a0a3189092420e31c4539369faa1c227d01206be Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 4 Dec 2017 12:45:14 +0100 Subject: [systemstatus] Test more services and report status --- modules-available/systemstatus/page.inc.php | 44 ++++++++++++++++------ .../systemstatus/templates/services.html | 26 ++++++++++--- 2 files changed, 53 insertions(+), 17 deletions(-) (limited to 'modules-available') diff --git a/modules-available/systemstatus/page.inc.php b/modules-available/systemstatus/page.inc.php index 7ee9e5a4..c1c52af0 100644 --- a/modules-available/systemstatus/page.inc.php +++ b/modules-available/systemstatus/page.inc.php @@ -228,20 +228,42 @@ class Page_SystemStatus extends Page protected function ajaxServices() { - $data = array(); + $data = array('services' => array()); + $tasks = array(); - $taskId = Trigger::ldadp(); - if ($taskId === false) - return; - $status = Taskmanager::waitComplete($taskId, 10000); + foreach (['dmsd', 'dnbd3-server', 'atftpd'] as $svc) { + $tasks[] = array( + 'name' => $svc, + 'task' => Taskmanager::submit('Systemctl', ['service' => $svc, 'operation' => 'is-active']) + ); + } + $tasks[] = array( + 'name' => 'LDAP/AD-Proxy', + 'task' => Trigger::ldadp() + ); + $deadline = time() + 10; + do { + $done = true; + foreach ($tasks as &$task) { + if (!is_string($task['task']) && (Taskmanager::isFailed($task['task']) || Taskmanager::isFinished($task['task']))) + continue; + $task['task'] = Taskmanager::waitComplete($task['task'], 100); + if (!Taskmanager::isFailed($task['task']) && !Taskmanager::isFinished($task['task'])) { + $done = false; + } + } + unset($task); + } while (!$done && time() < $deadline); - if (Taskmanager::isFailed($status)) { - if (isset($status['data']['messages'])) - $data['ldadpError'] = $status['data']['messages']; - else - $data['ldadpError'] = 'Taskmanager error'; + foreach ($tasks as $task) { + $fail = Taskmanager::isFailed($task['task']); + $data['services'][] = array( + 'name' => $task['name'], + 'fail' => $fail, + 'data' => isset($task['data']) ? $task['data'] : null, + 'unknown' => $task['task'] === false + ); } - // TODO: Dozentenmodul, tftp, ... echo Render::parse('services', $data); } diff --git a/modules-available/systemstatus/templates/services.html b/modules-available/systemstatus/templates/services.html index 6c4f0b93..29b33687 100644 --- a/modules-available/systemstatus/templates/services.html +++ b/modules-available/systemstatus/templates/services.html @@ -1,6 +1,20 @@ -{{#ldadpError}} -
{{ldadpError}}
-{{/ldadpError}} -{{^ldadpError}} -
LDAP-AD-Proxy: OK
-{{/ldadpError}} +{{#services}} + {{#unknown}} +
+ {{name}}: {{lang_unknownState}} +
+ {{/unknown}} + {{^unknown}} + {{#fail}} +
+ {{name}}: {{lang_failure}} + {{#data.messages}}
{{data.messages}}
{{/data.messages}} +
+ {{/fail}} + {{^fail}} +
+ {{name}}: {{lang_OK}} +
+ {{/fail}} + {{/unknown}} +{{/services}} -- cgit v1.2.3-55-g7522