summaryrefslogtreecommitdiffstats
path: root/inc/trigger.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/trigger.inc.php')
-rw-r--r--inc/trigger.inc.php33
1 files changed, 27 insertions, 6 deletions
diff --git a/inc/trigger.inc.php b/inc/trigger.inc.php
index 2af73872..e89a9a17 100644
--- a/inc/trigger.inc.php
+++ b/inc/trigger.inc.php
@@ -20,12 +20,24 @@ class Trigger
*/
public static function ipxe()
{
- $data = Property::getBootMenu();
- $data['ipaddress'] = Property::getServerIp();
- $task = Taskmanager::submit('CompileIPxe', $data);
- if (!isset($task['id']))
- return false;
- 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;
+ };
+ $ret = $ret($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;
}
/**
@@ -127,14 +139,23 @@ 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];
+ }else {
+ $opts = null;
+ }
return Taskmanager::submit('MountVmStore', array(
'address' => $addr,
'type' => 'images',
+ 'opts' => $opts,
'username' => $vmstore['cifsuser'],
'password' => $vmstore['cifspasswd']
));