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