summaryrefslogtreecommitdiffstats
path: root/modules-available/dnbd3/page.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2017-11-03 13:23:47 +0100
committerSimon Rettberg2017-11-03 13:23:47 +0100
commit3ef00090daeae283e739ed147dc397681f04db77 (patch)
tree7b960e810a83709c4347375b5a1eaf05cef8dc50 /modules-available/dnbd3/page.inc.php
parent[rebootcontrol] Move reboot function to helper class (diff)
downloadslx-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.php32
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 :-(');
+ }
+
}