diff options
Diffstat (limited to 'modules-available/systemstatus/page.inc.php')
-rw-r--r-- | modules-available/systemstatus/page.inc.php | 74 |
1 files changed, 21 insertions, 53 deletions
diff --git a/modules-available/systemstatus/page.inc.php b/modules-available/systemstatus/page.inc.php index f94aa4d4..05a98e94 100644 --- a/modules-available/systemstatus/page.inc.php +++ b/modules-available/systemstatus/page.inc.php @@ -88,61 +88,17 @@ class Page_SystemStatus extends Page protected function ajaxDiskStat() { User::assertPermission("show.overview.diskstat"); - $task = Taskmanager::submit('DiskStat'); - if ($task === false) - return; - $task = Taskmanager::waitComplete($task, 3000); - - if (!isset($task['data']['list']) || empty($task['data']['list'])) { - Taskmanager::addErrorMessage($task); + if (!SystemStatus::diskStat($systemUsage, $storeUsage, $currentSource, $wantedSource)) return; - } - $store = Property::getVmStoreUrl(); - $storeUsage = false; - $systemUsage = false; - if ($store !== false) { - if ($store === '<local>') - $storePoint = '/'; - else - $storePoint = CONFIG_VMSTORE_DIR; - // Determine free space - foreach ($task['data']['list'] as $entry) { - if ($entry['mountPoint'] === $storePoint) { - $storeUsage = array( - 'percent' => $entry['usedPercent'], - 'size' => Util::readableFileSize($entry['sizeKb'] * 1024), - 'free' => Util::readableFileSize($entry['freeKb'] * 1024), - 'color' => $this->usageColor($entry['usedPercent']) - ); - } - if ($entry['mountPoint'] === '/') { - $systemUsage = array( - 'percent' => $entry['usedPercent'], - 'size' => Util::readableFileSize($entry['sizeKb'] * 1024), - 'free' => Util::readableFileSize($entry['freeKb'] * 1024), - 'color' => $this->usageColor($entry['usedPercent']) - ); - } - } - $data = array( - 'store' => $storeUsage, - 'system' => $systemUsage - ); - // Determine if proper vm store is being used - if ($store !== '<local>') { - $data['storeMissing'] = $store; - } - foreach ($task['data']['list'] as $entry) { - if ($entry['mountPoint'] !== CONFIG_VMSTORE_DIR) - continue; - if ($store !== $entry['fileSystem']) { - $data['wrongStore'] = $entry['fileSystem']; - break; - } - $data['storeMissing'] = false; - } - } else { + $data = ['system' => $this->convertDiskStat($systemUsage)]; + if ($wantedSource === false) { // Not configured yet, nothing to display $data['notConfigured'] = true; + } elseif ($wantedSource === $currentSource) { // Fine and dandy + $data['store'] = $this->convertDiskStat($storeUsage); + } elseif ($currentSource === false) { // No current source, nothing mounted + $data['storeMissing'] = true; + } else { // Something else mounted + $data['wrongStore'] = $currentSource; } echo Render::parse('diskstat', $data); } @@ -437,6 +393,18 @@ class Page_SystemStatus extends Page echo '<pre>', htmlspecialchars($data, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), '</pre>'; } + private function convertDiskStat($stat) + { + if (!is_array($stat)) + return false; + return [ + 'percent' => $stat['usedPercent'], + 'size' => Util::readableFileSize($stat['sizeKb'] * 1024), + 'free' => Util::readableFileSize($stat['freeKb'] * 1024), + 'color' => $this->usageColor($stat['usedPercent']), + ]; + } + private function usageColor($percent) { if ($percent <= 50) { |