From 651a4082d0d2d6cebfd3532ea6617dffdea2aec6 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 21 Mar 2018 11:22:18 +0100 Subject: [vmstore] Add fields to specify mount options --- inc/trigger.inc.php | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'inc/trigger.inc.php') diff --git a/inc/trigger.inc.php b/inc/trigger.inc.php index 2af73872..f055d384 100644 --- a/inc/trigger.inc.php +++ b/inc/trigger.inc.php @@ -127,14 +127,21 @@ class Trigger } if ($storetype === 'nfs') { $addr = $vmstore['nfsaddr']; + $opts = 'nfsopts'; } elseif ($storetype === 'cifs') { $addr = $vmstore['cifsaddr']; + $opts = 'cifsopts'; } else { + $opts = null; $addr = 'null'; } + if (isset($vmstore[$opts])) { + $opts = $vmstore[$opts]; + } return Taskmanager::submit('MountVmStore', array( 'address' => $addr, 'type' => 'images', + 'opts' => $opts, 'username' => $vmstore['cifsuser'], 'password' => $vmstore['cifspasswd'] )); -- cgit v1.2.3-55-g7522 From 0e6a13dd7a38a17e5738e527ddf500be35870482 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 29 Mar 2018 12:58:19 +0200 Subject: [inc/Trigger] mount(): Set mount options to null if not given --- inc/trigger.inc.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'inc/trigger.inc.php') diff --git a/inc/trigger.inc.php b/inc/trigger.inc.php index f055d384..b49cafb0 100644 --- a/inc/trigger.inc.php +++ b/inc/trigger.inc.php @@ -137,6 +137,8 @@ class Trigger } if (isset($vmstore[$opts])) { $opts = $vmstore[$opts]; + }else { + $opts = null; } return Taskmanager::submit('MountVmStore', array( 'address' => $addr, -- cgit v1.2.3-55-g7522 From 9b24161637553f3889d9a81344e6eec59dc6aa00 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 7 May 2018 17:34:35 +0200 Subject: [serversetup-bwlp] Add log output to ipxe building task --- inc/event.inc.php | 3 +-- inc/trigger.inc.php | 1 + .../serversetup-bwlp/lang/de/template-tags.json | 4 +++- .../serversetup-bwlp/lang/en/template-tags.json | 4 +++- modules-available/serversetup-bwlp/page.inc.php | 20 ++++++++++-------- .../serversetup-bwlp/templates/ipxe_update.html | 24 ++++++++++++++++++---- 6 files changed, 40 insertions(+), 16 deletions(-) (limited to 'inc/trigger.inc.php') 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 @@
{{lang_menuGeneration}}
-
{{lang_menuGeneration}}
-
-- cgit v1.2.3-55-g7522 From 07b7dcd4d08be00541dcbd4a92a02f267a0b162c Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 17 Jan 2019 14:41:44 +0100 Subject: [serversetup-bwlp] Make ipxe trigger a hook for modularity --- inc/trigger.inc.php | 24 +++++++++++++++------- .../serversetup-bwlp/hooks/ipxe-update.inc.php | 10 +++++++++ 2 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 modules-available/serversetup-bwlp/hooks/ipxe-update.inc.php (limited to 'inc/trigger.inc.php') diff --git a/inc/trigger.inc.php b/inc/trigger.inc.php index 93f57236..8a130aca 100644 --- a/inc/trigger.inc.php +++ b/inc/trigger.inc.php @@ -20,13 +20,23 @@ class Trigger */ public static function ipxe() { - $data = Property::getBootMenu(); - $data['ipaddress'] = Property::getServerIp(); - $task = Taskmanager::submit('CompileIPxe', $data); - if (!isset($task['id'])) - return false; - Property::set('ipxe-task-id', $task['id'], 15); - return $task['id']; + $hooks = Hook::load('ipxe-update'); + $taskId = false; + foreach ($hooks as $hook) { + $ret = (function($taskId) use ($hook) { + $ret = include_once($hook->file); + if (is_string($ret)) + return $ret; + return isset($taskId) ? $taskId : false; + })($taskId); + if (is_string($ret)) { + $taskId = $ret; + } elseif (is_array($ret) && isset($ret['id'])) { + $taskId = $ret['id']; + } + } + Property::set('ipxe-task-id', $taskId, 15); + return $taskId; } /** diff --git a/modules-available/serversetup-bwlp/hooks/ipxe-update.inc.php b/modules-available/serversetup-bwlp/hooks/ipxe-update.inc.php new file mode 100644 index 00000000..166e80a8 --- /dev/null +++ b/modules-available/serversetup-bwlp/hooks/ipxe-update.inc.php @@ -0,0 +1,10 @@ + Property::getServerIp() +]; +$task = Taskmanager::submit('CompileIPxeNew', $data); +if (!isset($task['id'])) +return false; +Property::set('ipxe-task-id', $task['id'], 15); +return $task['id']; \ No newline at end of file -- cgit v1.2.3-55-g7522 From efdd92e2dec0c35f3b3c29cb69c6afe418287f1c Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 18 Jan 2019 16:36:50 +0100 Subject: [inc/Trigger] PHP 5.6 compat --- inc/trigger.inc.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'inc/trigger.inc.php') diff --git a/inc/trigger.inc.php b/inc/trigger.inc.php index 8a130aca..e89a9a17 100644 --- a/inc/trigger.inc.php +++ b/inc/trigger.inc.php @@ -23,12 +23,13 @@ class Trigger $hooks = Hook::load('ipxe-update'); $taskId = false; foreach ($hooks as $hook) { - $ret = (function($taskId) use ($hook) { + $ret = function($taskId) use ($hook) { $ret = include_once($hook->file); if (is_string($ret)) return $ret; return isset($taskId) ? $taskId : false; - })($taskId); + }; + $ret = $ret($taskId); if (is_string($ret)) { $taskId = $ret; } elseif (is_array($ret) && isset($ret['id'])) { -- cgit v1.2.3-55-g7522