From 3ef00090daeae283e739ed147dc397681f04db77 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 3 Nov 2017 13:23:47 +0100 Subject: [dnbd3] Add reboot button for managed proxies --- modules-available/dnbd3/page.inc.php | 32 ++++++++++ .../dnbd3/templates/page-serverlist.html | 68 +++++++++++++++++++++- 2 files changed, 98 insertions(+), 2 deletions(-) (limited to 'modules-available/dnbd3') 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 :-('); + } + } diff --git a/modules-available/dnbd3/templates/page-serverlist.html b/modules-available/dnbd3/templates/page-serverlist.html index 2d2ef803..1a4d8255 100644 --- a/modules-available/dnbd3/templates/page-serverlist.html +++ b/modules-available/dnbd3/templates/page-serverlist.html @@ -126,13 +126,20 @@ {{#machineuuid}} + {{#rebootcontrol}} + + {{/rebootcontrol}} {{/machineuuid}} {{^self}} - {{/self}} @@ -226,6 +233,28 @@ + +