fetch(PDO::FETCH_ASSOC)) { if (!is_null($exclude) && (int)$row['moduleid'] === (int)$exclude) continue; $id[] = (int)$row['moduleid']; } $task = Taskmanager::submit('LdadpLauncher', array( 'ids' => $id, 'parentTask' => $parent, 'failOnParentFail' => false )); if (!isset($task['id'])) return false; return $task['id']; } /** * Mount the VM store into the server. * * @param array $vmstore VM Store configuration to use. If false, read from properties * @return array|false task status of mount procedure, or false on error */ public static function mount($vmstore = false) { if ($vmstore === false) { $vmstore = Property::getVmStoreConfig(); } if (!is_array($vmstore)) return false; if (isset($vmstore['storetype'])) { $storetype = $vmstore['storetype']; } else { $storetype = 'unknown'; } 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'] )); } /** * Check and process all callbacks. * * @return boolean Whether there are still callbacks pending */ public static function checkCallbacks() { $tasksLeft = false; $callbackList = TaskmanagerCallback::getPendingCallbacks(); foreach ($callbackList as $taskid => $callbacks) { $status = Taskmanager::status($taskid); if ($status === false) continue; foreach ($callbacks as $callback) { TaskmanagerCallback::handleCallback($callback, $status); } if (Taskmanager::isFailed($status) || Taskmanager::isFinished($status)) Taskmanager::release($status); else $tasksLeft = true; } return $tasksLeft; } private static function triggerDaemons($action, $parent, &$taskids) { $task = Taskmanager::submit('Systemctl', array( 'operation' => $action, 'service' => 'dmsd', 'parentTask' => $parent, 'failOnParentFail' => false )); if (isset($task['id'])) { $taskids['dmsdid'] = $task['id']; $parent = $task['id']; } $task = Taskmanager::submit('Systemctl', array( 'operation' => $action, 'service' => 'dnbd3-server', 'parentTask' => $parent, 'failOnParentFail' => false )); if (isset($task['id'])) { $taskids['dnbd3id'] = $task['id']; $parent = $task['id']; } return $parent; } public static function stopDaemons($parent, &$taskids) { $parent = self::triggerDaemons('stop', $parent, $taskids); $task = Taskmanager::submit('LdadpLauncher', array( 'ids' => array(), 'parentTask' => $parent, 'failOnParentFail' => false )); if (isset($task['id'])) { $taskids['ldadpid'] = $task['id']; $parent = $task['id']; } return $parent; } public static function startDaemons($parent, &$taskids) { $parent = self::triggerDaemons('start', $parent, $taskids); $taskid = self::ldadp($parent); if ($taskid !== false) { $taskids['ldadpid'] = $taskid; $parent = $taskid; } return $parent; } }