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 +++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 11 deletions(-) (limited to 'modules-available/systemstatus/page.inc.php') 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); } -- cgit v1.2.3-55-g7522