diff options
Diffstat (limited to 'modules-available/vmstore/page.inc.php')
-rw-r--r-- | modules-available/vmstore/page.inc.php | 48 |
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); } } |