summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2021-04-20 17:09:48 +0200
committerSimon Rettberg2021-04-20 17:09:48 +0200
commite6b2d50114f497281f3db83374755fa15fe0d016 (patch)
treed6def2c052f44117bf958298a6dc6404b35e4051
parent[serversetup-bwlp-ipxe] Add iPXE version selector (diff)
downloadslx-admin-e6b2d50114f497281f3db83374755fa15fe0d016.tar.gz
slx-admin-e6b2d50114f497281f3db83374755fa15fe0d016.tar.xz
slx-admin-e6b2d50114f497281f3db83374755fa15fe0d016.zip
[inc/Trigger] Remember ::ipxe() result and return it on subsequent calls
This fixes triggering two or more compile runs in one request, which is most likely pointless as it would generate the same result. Just remember the return value (task id) from the first onvication and return it right away.
-rw-r--r--inc/trigger.inc.php5
-rw-r--r--modules-available/serversetup-bwlp-ipxe/hooks/ipxe-update.inc.php4
2 files changed, 7 insertions, 2 deletions
diff --git a/inc/trigger.inc.php b/inc/trigger.inc.php
index cd38ce98..6acd6f87 100644
--- a/inc/trigger.inc.php
+++ b/inc/trigger.inc.php
@@ -19,6 +19,9 @@ class Trigger
*/
public static function ipxe($taskId = null)
{
+ static $lastResult = false;
+ if ($lastResult !== false)
+ return $lastResult;
$hooks = Hook::load('ipxe-update');
foreach ($hooks as $hook) {
$ret = function($taskId) use ($hook) {
@@ -34,7 +37,7 @@ class Trigger
$taskId = $ret['id'];
}
}
- return $taskId ?? false;
+ return $lastResult = ($taskId ?? false);
}
/**
diff --git a/modules-available/serversetup-bwlp-ipxe/hooks/ipxe-update.inc.php b/modules-available/serversetup-bwlp-ipxe/hooks/ipxe-update.inc.php
index f645e9e7..76f8cfa2 100644
--- a/modules-available/serversetup-bwlp-ipxe/hooks/ipxe-update.inc.php
+++ b/modules-available/serversetup-bwlp-ipxe/hooks/ipxe-update.inc.php
@@ -13,8 +13,10 @@ $data = [
if ($data['ipaddress'] === 'invalid')
return null;
$task = Taskmanager::submit('CompileIPxeNew', $data);
-if (Taskmanager::isFailed($task))
+if (Taskmanager::isFailed($task)) {
+ error_log(print_r($task, true));
return null;
+}
TaskmanagerCallback::addCallback($task, 'ipxeCompileDone');
Property::set(IPxeBuilder::PROP_IPXE_COMPILE_TASKID, $task['id'], 15);
return $task['id']; \ No newline at end of file