diff options
author | Simon Rettberg | 2017-11-03 13:23:47 +0100 |
---|---|---|
committer | Simon Rettberg | 2017-11-03 13:23:47 +0100 |
commit | 3ef00090daeae283e739ed147dc397681f04db77 (patch) | |
tree | 7b960e810a83709c4347375b5a1eaf05cef8dc50 /modules-available/dnbd3/page.inc.php | |
parent | [rebootcontrol] Move reboot function to helper class (diff) | |
download | slx-admin-3ef00090daeae283e739ed147dc397681f04db77.tar.gz slx-admin-3ef00090daeae283e739ed147dc397681f04db77.tar.xz slx-admin-3ef00090daeae283e739ed147dc397681f04db77.zip |
[dnbd3] Add reboot button for managed proxies
Diffstat (limited to 'modules-available/dnbd3/page.inc.php')
-rw-r--r-- | modules-available/dnbd3/page.inc.php | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/modules-available/dnbd3/page.inc.php b/modules-available/dnbd3/page.inc.php index feefc75d..946df939 100644 --- a/modules-available/dnbd3/page.inc.php +++ b/modules-available/dnbd3/page.inc.php @@ -182,6 +182,7 @@ class Page_Dnbd3 extends Page 'list' => $servers, 'enabled' => Dnbd3::isEnabled(), 'checked_s' => Dnbd3::isEnabled() ? 'checked' : '', + 'rebootcontrol' => Module::isAvailable('rebootcontrol', false) )); } @@ -272,6 +273,8 @@ class Page_Dnbd3 extends Page $serverId = Request::any('server', false, 'int'); } if ($serverId === false) { + if (AJAX) + die('Missing parameter'); Message::addError('main.parameter-missing', 'server'); Util::redirect('?do=dnbd3'); } @@ -280,6 +283,8 @@ class Page_Dnbd3 extends Page LEFT JOIN machine m USING (machineuuid) WHERE s.serverid = :serverId', compact('serverId')); if ($server === false) { + if (AJAX) + die('Invalid server id'); Message::addError('server-non-existent', 'server'); Util::redirect('?do=dnbd3'); } @@ -307,6 +312,8 @@ class Page_Dnbd3 extends Page $this->ajaxServerTest(); } elseif ($action === 'editserver') { $this->ajaxEditServer(); + } elseif ($action === 'reboot') { + $this->ajaxReboot(); } else { die($action . '???'); } @@ -360,4 +367,29 @@ class Page_Dnbd3 extends Page echo Render::parse('fragment-server-settings', $server); } + private function ajaxReboot() + { + $server = $this->getServerById(); + if (!isset($server['machineuuid'])) { + die('Not automatic server.'); + } + if (!Module::isAvailable('rebootcontrol')) { + die('No rebootcontrol'); + } + $uuid = $server['machineuuid']; + $task = RebootControl::reboot([ $uuid ]); + if ($task === false) { + die('Taskmanager unreachable'); + } + $task = Taskmanager::waitComplete($task, 2000); + if (is_array($task) && isset($task['data']) && isset($task['data']['clientStatus']) && isset($task['data']['clientStatus'][$uuid])) { + $status = $task['data']['clientStatus'][$uuid]; + if (!empty($task['data']['error'])) { + $status .= "\n --- \n" . $task['data']['error']; + } + die($status); + } + die('Unknown :-('); + } + } |