]> git.ipfire.org Git - ipfire.org.git/commitdiff
fireinfo: Show average amount of memory on index page
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 30 Oct 2018 13:01:41 +0000 (13:01 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 30 Oct 2018 13:01:41 +0000 (13:01 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/backend/fireinfo.py
src/backend/util.py
src/templates/fireinfo/index.html
src/web/fireinfo.py

index 8c76da1cf957395ad85b13852c79765bc30aab79..80be0736147aabc8694a3ad265f2a67c2f7b1ad3 100644 (file)
@@ -1903,16 +1903,13 @@ class Fireinfo(Object):
                if res:
                        return res.percentage
 
-       def get_memory_amounts(self, when=None):
+       def get_average_memory_amount(self, when=None):
                res = self.db.get("WITH profiles AS (SELECT fireinfo_profiles_with_data_at(%s) AS id) \
-                       SELECT AVG(fireinfo_profiles_memory.amount) AS avg, \
-                       STDDEV(fireinfo_profiles_memory.amount) AS stddev, \
-                       MIN(fireinfo_profiles_memory.amount) AS min, \
-                       MAX(fireinfo_profiles_memory.amount) AS max FROM profiles \
+                       SELECT AVG(fireinfo_profiles_memory.amount) AS avg FROM profiles \
                        LEFT JOIN fireinfo_profiles_memory ON profiles.id = fireinfo_profiles_memory.profile_id", when)
 
                if res:
-                       return (res.avg or 0, res.stddev or 0, res.min or 0, res.max or 0)
+                       return res.avg or 0
 
        def get_arch_map(self, when=None):
                res = self.db.query("WITH profiles AS (SELECT fireinfo_profiles_with_data_at(%s) AS id) \
index e64039eecf780db380a278af76495f1f422be7f5..ea7692a0dab3cb20210c9bb27e667da63d782c25 100644 (file)
@@ -3,14 +3,17 @@
 import random
 import string
 
-def format_size(s):
-       units = ("B", "k", "M", "G", "T")
+def format_size(s, max_unit=None):
+       units = ("B", "kB", "MB", "GB", "TB")
 
        i = 0
        while s >= 1024 and i < len(units) - 1:
                s /= 1024
                i += 1
 
+               if max_unit and units[i] == max_unit:
+                       break
+
        return "%.0f%s" % (s, units[i])
 
 def format_time(s, shorter=True):
index 9f8ff37a173a6f2489f8222a7eb174f5d73d8ccd..5f562915907e9915cec060748944d521cf67fc0b 100644 (file)
                </div>
        </section>
 
+       <section>
+               <div class="container">
+                       <div class="row">
+                               <div class="col-12 col-md-4 text-center">
+                                       <h1>{{ format_size(memory_avg * 1024, "MB") }}</h1>
+
+                                       <p class="text-muted">
+                                               {{ _("Average Amount of Memory") }}
+                                       </p>
+                               </div>
+                       </div>
+               </div>
+       </section>
+
        <section class="inverse">
                <div class="container">
                        <div class="row">
index bd3ec2a8d26c1472e4f744d7fcb0dc7f4651fb63..ca4446b5d7b6efc26ed8565485f41235d564299a 100644 (file)
@@ -158,6 +158,9 @@ class IndexHandler(BaseHandler):
                        # Release
                        "latest_release" : self.backend.releases.get_latest(),
 
+                       # Hardware
+                       "memory_avg"     : self.backend.fireinfo.get_average_memory_amount(when=self.when),
+
                        # Virtualization
                        "hypervisors"    : self.fireinfo.get_hypervisor_map(when=self.when),
                        "virtual_ratio"  : self.fireinfo.get_virtual_ratio(when=self.when),