diff options
Diffstat (limited to 'modules-available/vmstore/page.inc.php')
-rw-r--r-- | modules-available/vmstore/page.inc.php | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/modules-available/vmstore/page.inc.php b/modules-available/vmstore/page.inc.php index 8813cde0..b490e749 100644 --- a/modules-available/vmstore/page.inc.php +++ b/modules-available/vmstore/page.inc.php @@ -91,6 +91,7 @@ class Page_VmStore extends Page if (!Module::isAvailable('rebootcontrol')) { ErrorHandler::traceError('rebootcontrol module not enabled'); } + Render::setTitle(Dictionary::translate('page-title-benchmark', true)); if (Request::post('action') === 'start') { $this->benchmarkActionStart(); } @@ -134,13 +135,23 @@ class Page_VmStore extends Page } Util::redirect('?do=vmstore&show=benchmark&action=result&id=' . $id); } - $nfs = !Dnbd3::isEnabled(); + $selectedServer = Request::post('server', 'auto', 'string'); + if ($selectedServer !== 'nfs' && !Dnbd3::isEnabled()) { + $selectedServer = 'nfs'; + } elseif ($selectedServer !== 'auto') { + $ip = Dnbd3::getServer($selectedServer); + if ($ip === false) { + Message::addError('invalid-dnbd3-server-id', $selectedServer); + return; + } + $selectedServer = $ip['clientip']; + } $data['image'] = Request::post('image', Request::REQUIRED, 'string'); // Save once first to minimize race window $data['task'] = 'inprogress'; Property::updateListEntry(VmStoreBenchmark::PROP_LIST_KEY, $id, json_encode($data), 30); $start = 0; - $data['task'] = VmStoreBenchmark::start($id, $data['machines'], $data['image'], $nfs, $start); + $data['task'] = VmStoreBenchmark::start($id, $data['machines'], $data['image'], $selectedServer, $start); if ($data['task'] === null) { $data['task'] = 'failed'; } else { @@ -176,7 +187,8 @@ class Page_VmStore extends Page if (!isset($images[$name])) { $images[$name] = [ 'users' => 0, - 'size' => Util::readableFileSize($img['size'], 1), + 'size' => $img['size'], + 'size_s' => Util::readableFileSize($img['size'], 1), 'name' => $name, 'id' => count($images) ]; @@ -184,8 +196,25 @@ class Page_VmStore extends Page $images[$name]['users'] += $img['users']; } } + $servers = []; + if (Dnbd3::isEnabled()) { + $servers[] = ['idx' => 'auto', + 'server' => Dictionary::translate('dnbd3-all-loadbalance', true)]; + foreach ($lookup as $ip => $idx) { + $servers[] = ['idx' => $idx, 'server' => $ip]; + } + } + if (!Dnbd3::isEnabled() || Dnbd3::hasNfsFallback()) { + $servers[] = ['idx' => 'nfs', 'server' => 'NFS']; + } + $servers[0]['checked'] = 'checked'; ArrayUtil::sortByColumn($images, 'users', SORT_NUMERIC | SORT_DESC); - Render::addTemplate('benchmark-imgselect', ['id' => $id, 'list' => array_values($images)]); + Module::isAvailable('js_stupidtable'); + Render::addTemplate('benchmark-imgselect', [ + 'id' => $id, + 'list' => array_values($images), + 'servers' => $servers, + ]); } private function benchmarkShowResult() @@ -265,6 +294,10 @@ EOF; 'values' => VmStoreBenchmark::parseBenchLine($mode[3]), ]; } + } else { + $client['stderr'] = substr($out['stderr'], 0, 4000) + . "\nStatus: {$out['state']}, ExitCode: {$out['exitCode']}'"; + $client['stdout'] = substr($out['stdout'], 0, 4000); } $m = Database::queryFirst('SELECT clientip, hostname FROM machine WHERE machineuuid = :uuid', ['uuid' => $uuid]); |