summaryrefslogtreecommitdiffstats
path: root/modules-available/vmstore/page.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/vmstore/page.inc.php')
-rw-r--r--modules-available/vmstore/page.inc.php41
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]);