From 02111ed9a4935baf6c1f2968e50daf1b663702fe Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 20 Mar 2018 11:30:53 +0100 Subject: [dnbd3] Redesign proxy detail view, add image list --- modules-available/dnbd3/page.inc.php | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) (limited to 'modules-available/dnbd3/page.inc.php') diff --git a/modules-available/dnbd3/page.inc.php b/modules-available/dnbd3/page.inc.php index afcb9b2c..8a9abdc1 100644 --- a/modules-available/dnbd3/page.inc.php +++ b/modules-available/dnbd3/page.inc.php @@ -264,26 +264,31 @@ class Page_Dnbd3 extends Page User::assertPermission('view.details'); $server = $this->getServerById(); Render::addTemplate('page-proxy-header', $server); - $stats = Dnbd3Rpc::query($server['ip'], 5003, true, true, false, true); + $stats = Dnbd3Rpc::query($server['ip'], 5003, true, true, true, true); if (!is_array($stats) || !isset($stats['runId'])) { Message::addError('server-unreachable'); return; } - $stats['bytesSent_s'] = Util::readableFileSize($stats['bytesSent']); - $stats['bytesReceived_s'] = Util::readableFileSize($stats['bytesReceived']); + foreach (['bytesSent', 'bytesReceived', 'spaceTotal', 'spaceFree'] as $key) { + $stats[$key . '_s'] = Util::readableFileSize($stats[$key]); + } + if ($stats['spaceTotal'] > 0) { + $stats['percentFree'] = ($stats['spaceFree'] / $stats['spaceTotal']) * 100; + $stats['percentFree'] = round($stats['percentFree'], $stats['percentFree'] < 10 ? 1 : 0); + } $stats['uptime_s'] = floor($stats['uptime'] / 86400) . 'd ' . gmdate('H:i:s', $stats['uptime']); Render::addTemplate('page-proxy-stats', $stats); - // TODO $images = Dnbd3Rpc::query($server['ip'], 5003, false, false, true); + Render::openTag('div', ['class' => 'tab-content']); $confAlts = Dnbd3Rpc::query($server['ip'], 5003, false, false, false, false, true, true); $ips = array(); $sort = array(); foreach ($stats['clients'] as &$c) { $c['bytesSent_s'] = Util::readableFileSize($c['bytesSent']); $sort[] = $c['bytesSent']; - $ips[] = preg_replace('/:\d+$/', '', $c['address']); + $ips[preg_replace('/:\d+$/', '', $c['address'])] = true; } + $ips = array_keys($ips); array_multisort($sort, SORT_DESC, $stats['clients']); - Render::openTag('div', ['class' => 'row']); // Config if (is_string($confAlts['config'])) { Render::addTemplate('page-proxy-config', $confAlts); @@ -295,10 +300,9 @@ class Page_Dnbd3 extends Page unset($as); Render::addTemplate('page-proxy-altservers', $confAlts); } - Render::closeTag('div'); - Render::openTag('div', ['class' => 'row']); // Count locations - $res = Database::simpleQuery('SELECT locationid, Count(*) AS cnt FROM machine WHERE clientip IN (:ips) GROUP BY locationid', compact('ips')); + $res = Database::simpleQuery("SELECT locationid, Count(*) AS cnt FROM machine + WHERE clientip IN (:ips) AND state IN ('IDLE', 'OCCUPIED') GROUP BY locationid", compact('ips')); $locCount = Location::getLocationsAssoc(); $locCount[0] = array( 'locationname' => '/', @@ -326,10 +330,17 @@ class Page_Dnbd3 extends Page } } if ($showLocs) { - $locCount = array_filter($locCount, function ($v) { return isset($v['keep']); }); - Render::addTemplate('page-proxy-loclist', array('list' => array_values($locCount))); + $stats['loclist'] = array_values(array_filter($locCount, function ($v) { return isset($v['keep']); })); } Render::addTemplate('page-proxy-clients', $stats); + $sort1 = $sort2 = []; + foreach ($stats['images'] as &$image) { + $image['size_s'] = Util::readableFileSize($image['size']); + $sort1[] = $image['users']; + $sort2[] = $image['name']; + } + array_multisort($sort1, SORT_NUMERIC | SORT_DESC, $sort2, SORT_ASC, $stats['images']); + Render::addTemplate('page-proxy-images', $stats); Render::closeTag('div'); } -- cgit v1.2.3-55-g7522