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.php48
1 files changed, 27 insertions, 21 deletions
diff --git a/modules-available/vmstore/page.inc.php b/modules-available/vmstore/page.inc.php
index 41e7e990..8813cde0 100644
--- a/modules-available/vmstore/page.inc.php
+++ b/modules-available/vmstore/page.inc.php
@@ -107,15 +107,26 @@ class Page_VmStore extends Page
}
}
+ private function getJobFromId(int $id)
+ {
+ $data = Property::getListEntry(VmStoreBenchmark::PROP_LIST_KEY, $id);
+ if ($data !== null) {
+ $data = json_decode($data, true);
+ }
+ if (!is_array($data) || !isset($data['machines'])) {
+ Message::addError('invalid-benchmark-job', $id);
+ return null;
+ }
+ return $data;
+ }
+
private function benchmarkActionStart()
{
Module::isAvailable('dnbd3');
- $id = Request::post('id', Request::REQUIRED, 'string');
- $data = Session::get('benchmark-' . $id);
- if (!isset($data['machines'])) {
- Message::addError('invalid-benchmark-job', $id);
+ $id = Request::post('id', Request::REQUIRED, 'int');
+ $data = $this->getJobFromId($id);
+ if ($data === null)
return;
- }
if (isset($data['task'])) {
if ($data['task'] === 'inprogress') {
// Let's hope the proper ID gets written in a short while
@@ -127,29 +138,26 @@ class Page_VmStore extends Page
$data['image'] = Request::post('image', Request::REQUIRED, 'string');
// Save once first to minimize race window
$data['task'] = 'inprogress';
- Session::set('benchmark-' . $id, $data, 60);
- Session::saveExtraData();
+ Property::updateListEntry(VmStoreBenchmark::PROP_LIST_KEY, $id, json_encode($data), 30);
$start = 0;
$data['task'] = VmStoreBenchmark::start($id, $data['machines'], $data['image'], $nfs, $start);
if ($data['task'] === null) {
$data['task'] = 'failed';
} else {
// Test is 2x 30 seconds
- $data['expected'] = $start + 60;
+ $data['expected'] = $start + 64;
}
error_log('Saving: ' . json_encode($data));
- Session::set('benchmark-' . $id, $data, 60);
+ Property::updateListEntry(VmStoreBenchmark::PROP_LIST_KEY, $id, json_encode($data), 30);
Util::redirect('?do=vmstore&show=benchmark&action=result&id=' . $id);
}
private function benchmarkShowImageSelect()
{
- $id = Request::get('id', Request::REQUIRED, 'string');
- $data = Session::get('benchmark-' . $id);
- if (!isset($data['machines'])) {
- Message::addError('invalid-benchmark-job', $id);
+ $id = Request::get('id', Request::REQUIRED, 'int');
+ $data = $this->getJobFromId($id);
+ if ($data === null)
return;
- }
if (isset($data['task'])) {
Message::addWarning('benchmark-already-started');
Util::redirect('?do=vmstore&show=benchmark&action=result&id=' . $id);
@@ -182,12 +190,10 @@ class Page_VmStore extends Page
private function benchmarkShowResult()
{
- $id = Request::get('id', Request::REQUIRED, 'string');
- $data = Session::get('benchmark-' . $id);
- if (!isset($data['machines'])) {
- Message::addError('invalid-benchmark-job', $id);
+ $id = Request::get('id', Request::REQUIRED, 'int');
+ $data = $this->getJobFromId($id);
+ if ($data === null)
return;
- }
if (!isset($data['task'])) {
Message::addWarning('select-image-first');
Util::redirect('?do=vmstore&show=benchmark&action=select&id=' . $id);
@@ -219,7 +225,7 @@ class Page_VmStore extends Page
Render::addTemplate('benchmark-result', $args);
}
- private function processRunningBenchmark(string $id, array &$data, bool $timeout)
+ private function processRunningBenchmark(int $id, array &$data, bool $timeout)
{
Module::isAvailable('rebootcontrol');
$changed = false;
@@ -270,7 +276,7 @@ EOF;
$changed = true;
}
if ($changed) {
- Session::set('benchmark-' . $id, $data);
+ Property::updateListEntry(VmStoreBenchmark::PROP_LIST_KEY, $id, json_encode($data), 30);
}
}