summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2018-05-07 17:34:35 +0200
committerSimon Rettberg2018-05-07 17:34:35 +0200
commit9b24161637553f3889d9a81344e6eec59dc6aa00 (patch)
tree55a6734634ba8ffc83b244b1d495bb89836dc00a
parenttaskmanager.js: Support setting min height of log <pre> (diff)
downloadslx-admin-9b24161637553f3889d9a81344e6eec59dc6aa00.tar.gz
slx-admin-9b24161637553f3889d9a81344e6eec59dc6aa00.tar.xz
slx-admin-9b24161637553f3889d9a81344e6eec59dc6aa00.zip
[serversetup-bwlp] Add log output to ipxe building task
-rw-r--r--inc/event.inc.php3
-rw-r--r--inc/trigger.inc.php1
-rw-r--r--modules-available/serversetup-bwlp/lang/de/template-tags.json4
-rw-r--r--modules-available/serversetup-bwlp/lang/en/template-tags.json4
-rw-r--r--modules-available/serversetup-bwlp/page.inc.php20
-rw-r--r--modules-available/serversetup-bwlp/templates/ipxe_update.html24
6 files changed, 40 insertions, 16 deletions
diff --git a/inc/event.inc.php b/inc/event.inc.php
index fe59b2b9..b1ee3663 100644
--- a/inc/event.inc.php
+++ b/inc/event.inc.php
@@ -98,8 +98,7 @@ class Event
public static function serverIpChanged()
{
error_log('Server ip changed');
- global $tidIpxe;
- $tidIpxe = Trigger::ipxe();
+ Trigger::ipxe();
if (Module::isAvailable('sysconfig')) { // TODO: Modularize events
ConfigModule::serverIpChanged();
}
diff --git a/inc/trigger.inc.php b/inc/trigger.inc.php
index b49cafb0..93f57236 100644
--- a/inc/trigger.inc.php
+++ b/inc/trigger.inc.php
@@ -25,6 +25,7 @@ class Trigger
$task = Taskmanager::submit('CompileIPxe', $data);
if (!isset($task['id']))
return false;
+ Property::set('ipxe-task-id', $task['id'], 15);
return $task['id'];
}
diff --git a/modules-available/serversetup-bwlp/lang/de/template-tags.json b/modules-available/serversetup-bwlp/lang/de/template-tags.json
index f80febb0..74ab494b 100644
--- a/modules-available/serversetup-bwlp/lang/de/template-tags.json
+++ b/modules-available/serversetup-bwlp/lang/de/template-tags.json
@@ -21,9 +21,11 @@
"lang_menuCustomHint3": "und w\u00e4hlen Sie als Standard-Bootverhalten ebenfalls custom.",
"lang_menuDisplayTime": "Anzeigedauer des Men\u00fcs",
"lang_menuGeneration": "Erzeugen des Bootmen\u00fcs",
- "lang_moduleHeading": "iPXE / Boot Menu",
+ "lang_moduleHeading": "iPXE \/ Boot Menu",
+ "lang_pxeBuilt": "PXE-Binary gebaut",
"lang_seconds": "Sekunden",
"lang_set": "Setzen",
+ "lang_usbBuilt": "USB-Image gebaut",
"lang_usbImage": "USB-Image",
"lang_usbImgHelp": "Mit dem USB-Image k\u00f6nnen Sie einen bootbaren USB-Stick erstellen, \u00fcber den sich bwLehrpool an Rechnern starten l\u00e4sst, die keinen Netzwerkboot unterst\u00fctzen, bzw. f\u00fcr die keine entsprechende DHCP-Konfiguration vorhanden ist. Dies erfordert dann lediglich, dass in der BIOS-Konfiguration des Rechners USB-Boot zugelassen ist. Der Stick dient dabei lediglich als Einstiegspunkt; es ist nach wie vor ein bwLehrpool-Satellitenserver f\u00fcr den eigentlichen Bootvorgang von N\u00f6ten.",
"lang_usbImgHelpLinux": "Nutzen Sie dd, um das Image auf einen USB-Stick zu schreiben. Das Image enth\u00e4lt bereits eine Partitionstabelle, achten Sie daher darauf, dass Sie das Image z.B. nach \/dev\/sdx schreiben, und nicht nach \/dev\/sdx1",
diff --git a/modules-available/serversetup-bwlp/lang/en/template-tags.json b/modules-available/serversetup-bwlp/lang/en/template-tags.json
index 1948718b..7f519022 100644
--- a/modules-available/serversetup-bwlp/lang/en/template-tags.json
+++ b/modules-available/serversetup-bwlp/lang/en/template-tags.json
@@ -21,9 +21,11 @@
"lang_menuCustomHint3": "and select as the default boot behavior custom as well.",
"lang_menuDisplayTime": "Menu Display Time",
"lang_menuGeneration": "Generating boot menu...",
- "lang_moduleHeading": "iPXE / Boot Menu",
+ "lang_moduleHeading": "iPXE \/ Boot Menu",
+ "lang_pxeBuilt": "Built PXE binary",
"lang_seconds": "Seconds",
"lang_set": "Set",
+ "lang_usbBuilt": "Built USB image",
"lang_usbImage": "USB image",
"lang_usbImgHelp": "The USB image can be used to create a bootable USB stick, which enables you to boot bwLehrpool without changing your DHCP settings or enabling network boot in the clients. The only requirement is that you enable USB boot in the client's BIOS. The USB stick is only used for bootstrapping, the actual bwLehrpool system is still loaded via network from your local bwLehrpool server.",
"lang_usbImgHelpLinux": "On Linux you can simply use dd to write the image to a usb stick. The image already contains a partition table, so make sure you write the image to the device itself and not to an already existing partition (e.g. to \/dev\/sdx not \/dev\/sdx1)",
diff --git a/modules-available/serversetup-bwlp/page.inc.php b/modules-available/serversetup-bwlp/page.inc.php
index 78096d7b..52b3afe4 100644
--- a/modules-available/serversetup-bwlp/page.inc.php
+++ b/modules-available/serversetup-bwlp/page.inc.php
@@ -54,9 +54,15 @@ class Page_ServerSetup extends Page
protected function doRender()
{
Render::addTemplate("heading");
- $taskid = Request::any('taskid');
- if ($taskid !== false && Taskmanager::isTask($taskid)) {
- Render::addTemplate('ipxe_update', array('taskid' => $taskid));
+ $task = Property::get('ipxe-task-id');
+ if ($task !== false) {
+ $task = Taskmanager::status($task);
+ if (!Taskmanager::isTask($task) || Taskmanager::isFinished($task)) {
+ $task = false;
+ }
+ }
+ if ($task !== false) {
+ Render::addTemplate('ipxe_update', array('taskid' => $task['id']));
}
Permission::addGlobalTags($perms, null, ['edit.menu', 'edit.address', 'download']);
@@ -137,9 +143,7 @@ class Page_ServerSetup extends Page
}
if ($valid) {
Property::setServerIp($newAddress);
- global $tidIpxe;
- if (isset($tidIpxe) && $tidIpxe !== false)
- Util::redirect('?do=ServerSetup&taskid=' . $tidIpxe);
+ Util::redirect('?do=ServerSetup');
} else {
Message::addError('invalid-ip', $newAddress);
}
@@ -163,8 +167,8 @@ class Page_ServerSetup extends Page
else
$this->currentMenu['masterpassword'] = Crypto::hash6($this->currentMenu['masterpasswordclear']);
Property::setBootMenu($this->currentMenu);
- $id = Trigger::ipxe();
- Util::redirect('?do=ServerSetup&taskid=' . $id);
+ Trigger::ipxe();
+ Util::redirect('?do=ServerSetup');
}
private function handleGetImage()
diff --git a/modules-available/serversetup-bwlp/templates/ipxe_update.html b/modules-available/serversetup-bwlp/templates/ipxe_update.html
index 9c598667..e7ba5ffa 100644
--- a/modules-available/serversetup-bwlp/templates/ipxe_update.html
+++ b/modules-available/serversetup-bwlp/templates/ipxe_update.html
@@ -1,20 +1,36 @@
<div class="panel panel-default">
<div class="panel-heading">{{lang_menuGeneration}}</div>
<div class="panel-body">
- <div data-tm-id="{{taskid}}" data-tm-log="error" data-tm-callback="restartCb">{{lang_menuGeneration}}</div>
- <div id="genfailed" class="alert alert-danger" style="display:none">
+ <div id="built-pxe" class="invisible">
+ <span class="glyphicon glyphicon-ok"></span>
+ {{lang_pxeBuilt}}
+ </div>
+ <div id="built-usb" class="invisible">
+ <span class="glyphicon glyphicon-ok"></span>
+ {{lang_usbBuilt}}
+ </div>
+ <div id="genfailed" class="alert alert-danger collapse">
{{lang_generationFailed}}
</div>
+ <div data-tm-id="{{taskid}}" data-tm-log="log" data-tm-log-height="31em" data-tm-callback="ipxeGenCb">{{lang_menuGeneration}}</div>
</div>
</div>
<script type="text/javascript">
- function restartCb(task)
+ function ipxeGenCb(task)
{
if (!task || !task.statusCode)
return;
+ if (task.data) {
+ if (task.data.pxeDone) $('#built-pxe').removeClass('invisible');
+ if (task.data.usbDone) $('#built-usb').removeClass('invisible');
+ }
if (task.statusCode === 'TASK_ERROR') {
- $('#genfailed').show('slow');
+ var $gf = $('#genfailed');
+ if (task.data && task.data.errors) {
+ $gf.append($('<pre>').text(task.data.errors));
+ }
+ $gf.show('slow');
}
}
</script>