]>
git.ipfire.org Git - people/shoehn/ipfire.org.git/blob - www/webapp/handlers_stasy.py
6a66ee77bc574f914942b4e3e6659191233f4270
3 from __future__
import division
10 from handlers_base
import *
12 class StasyBaseHandler(BaseHandler
):
15 return backend
.Stasy()
17 def format_size(self
, s
):
18 units
= ("K", "M", "G", "T")
21 while s
>= 1024 and unit
< len(units
):
25 return "%.1f%s" % (s
, units
[unit
])
27 def cut_string(self
, s
, limit
=15):
33 def render(self
, *args
, **kwargs
):
35 "cut_string" : self
.cut_string
,
36 "format_size" : self
.format_size
,
39 return BaseHandler
.render(self
, *args
, **kwargs
)
42 class StasyIndexHandler(StasyBaseHandler
):
44 profiles
= self
.stasy
.get_profiles()
46 self
.render("stasy-index.html", profiles
=profiles
)
49 profile_id
= self
.get_argument("profile_id", None)
51 raise tornado
.web
.HTTPError(400, "No profile ID was given.")
53 if not self
.stasy
.profile_exists(profile_id
):
54 raise tornado
.web
.HTTPError(404, "Profile does not exist.")
56 self
.redirect("/profile/%s" % profile_id
)
59 class StasyProfileDetailHandler(StasyBaseHandler
):
60 def get(self
, profile_id
):
61 profile
= self
.stasy
.get_profile(profile_id
)
63 raise tornado
.web
.HTTPError(404, "Profile not found: %s" % profile_id
)
65 self
.render("stasy-profile-detail.html", profile
=profile
)
68 class StasyStatsHandler(StasyBaseHandler
):
70 self
.render("stasy-stats.html")
73 class StasyStatsCPUHandler(StasyBaseHandler
):
75 return self
.render("stasy-stats-cpus.html",
76 cpu_vendors
=self
.stasy
.cpu_vendors_map
,
77 average_speed
=self
.stasy
.cpu_speed_average
,
78 cpu_speeds
=self
.stasy
.cpu_speed_map
)
81 class StasyStatsCPUFlagsHandler(StasyBaseHandler
):
85 for flag
in ("lm", "pae"):
86 kwargs
["cpus_" + flag
] = self
.stasy
.get_cpu_flag_map(flag
)
88 return self
.render("stasy-stats-cpu-flags.html", **kwargs
)
90 class StasyStatsMemoryHandler(StasyBaseHandler
):
92 return self
.render("stasy-stats-memory.html",
93 average_memory
=self
.stasy
.memory_average
,
94 memory
=self
.stasy
.get_memory_map())
97 class StasyStatsOSesHandler(StasyBaseHandler
):
99 return self
.render("stasy-stats-oses.html",
100 arches
=self
.stasy
.arch_map
,
101 kernels
=self
.stasy
.kernel_map
,
102 releases
=self
.stasy
.release_map
)
105 class StasyStatsVirtualHandler(StasyBaseHandler
):
107 return self
.render("stasy-stats-virtual.html",
108 hypervisor_vendors
= self
.stasy
.hypervisor_map
,
109 is_virtual
= self
.stasy
.virtual_map
)
111 class StasyStatsGeoHandler(StasyBaseHandler
):
113 return self
.render("stasy-stats-geo.html",
114 languages
= self
.stasy
.get_language_map(),
115 geo_locations
= self
.stasy
.get_geo_location_map())
118 class StasyStatsVendorDetail(StasyBaseHandler
):
119 def get(self
, bus
, vendor_id
):
125 cls
= bus2cls
[bus
.lower()]
126 vendor_name
= cls().get_vendor(vendor_id
)
128 # Get a list of all models we know from this vendor
129 models
= self
.stasy
.get_models_by_vendor(bus
, vendor_id
)
131 self
.render("stasy-vendor-detail.html",
132 vendor_name
=vendor_name
, models
=models
)
135 class StasyStatsModelDetail(StasyBaseHandler
):
136 def get(self
, bus
, vendor_id
, model_id
):
142 cls
= bus2cls
[bus
.lower()]
144 vendor_name
= cls().get_vendor(vendor_id
)
145 model_name
= cls().get_device(vendor_id
, model_id
)
148 self
.stasy
.get_device_percentage(bus
, vendor_id
, model_id
) * 100
150 self
.render("stasy-model-detail.html",
152 vendor_name
=vendor_name
,
154 model_name
=model_name
,
155 percentage
=percentage
)