X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=src%2Fbackend%2Ffireinfo.py;h=702739bd6dfe10eeeab7a98aeabc95a793dd05cd;hb=HEAD;hp=a81e75331dc99a5f6dddae78f1370ec56d927146;hpb=b519abebeacac15c5828d78b481714abcb36bd91;p=ipfire.org.git diff --git a/src/backend/fireinfo.py b/src/backend/fireinfo.py index a81e7533..702739bd 100644 --- a/src/backend/fireinfo.py +++ b/src/backend/fireinfo.py @@ -234,7 +234,7 @@ PROFILE_SCHEMA = { "pattern" : r"^.{,80}$", }, "root_size" : { - "type" : "number", + "type" : ["number", "null"], }, "vendor" : { "type" : ["string", "null"], @@ -615,6 +615,16 @@ class System(Object): def release(self): return self.blob.get("release") + # Memory + + @property + def memory(self): + return self.blob.get("memory") * 1024 + + @property + def friendly_memory(self): + return util.format_size(self.memory or 0) + @property def storage(self): return self.blob.get("storage_size", 0) @@ -688,16 +698,6 @@ class Profile(Object): def processor(self): return Processor(self.backend, self.blob.get("cpu", {})) - # Memory - - @property - def memory(self): - return self.blob.get("memory") - - @property - def friendly_memory(self): - return util.format_size(self.memory or 0) - # Virtual def is_virtual(self): @@ -1067,7 +1067,7 @@ class Fireinfo(Object): else: res = self.db.query(""" SELECT - blob->'cpu'->'vendor' AS vendor, + NULLIF(blob->'cpu'->'vendor', '""'::jsonb) AS vendor, fireinfo_percentage( COUNT(*), SUM(COUNT(*)) OVER () ) AS p @@ -1077,10 +1077,8 @@ class Fireinfo(Object): expired_at IS NULL AND blob IS NOT NULL - AND - blob->'cpu'->'vendor' IS NOT NULL GROUP BY - blob->'cpu'->'vendor' + NULLIF(blob->'cpu'->'vendor', '""'::jsonb) """) return { CPU_VENDORS.get(row.vendor, row.vendor) : row.p for row in res } @@ -1280,7 +1278,10 @@ class Fireinfo(Object): else: res = self.db.query(""" SELECT - blob->'system'->'kernel' AS kernel, + COALESCE( + blob->'system'->'kernel_release', + blob->'system'->'kernel' + ) AS kernel, fireinfo_percentage( COUNT(*), SUM(COUNT(*)) OVER () ) AS p @@ -1291,9 +1292,16 @@ class Fireinfo(Object): AND blob IS NOT NULL AND - blob->'system'->'kernel' IS NOT NULL + ( + blob->'system'->'kernel_release' IS NOT NULL + OR + blob->'system'->'kernel' IS NOT NULL + ) GROUP BY - blob->'system'->'kernel' + COALESCE( + blob->'system'->'kernel_release', + blob->'system'->'kernel' + ) """) return { row.kernel : row.p for row in res }