]>
git.ipfire.org Git - people/shoehn/ipfire.org.git/blob - www/webapp/handlers_stasy.py
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
):
88 ("virt", ("vmx", "svm")),
91 for name
, flag
in flags
:
92 kwargs
["cpus_" + name
] = self
.stasy
.get_cpu_flag_map(flag
)
96 return self
.render("stasy-stats-cpu-flags.html", **kwargs
)
98 class StasyStatsMemoryHandler(StasyBaseHandler
):
100 return self
.render("stasy-stats-memory.html",
101 average_memory
=self
.stasy
.memory_average
,
102 memory
=self
.stasy
.get_memory_map())
105 class StasyStatsOSesHandler(StasyBaseHandler
):
107 return self
.render("stasy-stats-oses.html",
108 arches
=self
.stasy
.arch_map
,
109 kernels
=self
.stasy
.kernel_map
,
110 releases
=self
.stasy
.release_map
)
113 class StasyStatsVirtualHandler(StasyBaseHandler
):
115 return self
.render("stasy-stats-virtual.html",
116 hypervisor_vendors
= self
.stasy
.hypervisor_map
,
117 is_virtual
= self
.stasy
.virtual_map
)
119 class StasyStatsGeoHandler(StasyBaseHandler
):
121 return self
.render("stasy-stats-geo.html",
122 languages
= self
.stasy
.get_language_map(),
123 geo_locations
= self
.stasy
.get_geo_location_map())
126 class StasyStatsNetworkHandler(StasyBaseHandler
):
128 return self
.render("stasy-stats-network.html",
129 network_zones
=self
.stasy
.get_network_zones_map())
132 class StasyStatsVendorDetail(StasyBaseHandler
):
133 def get(self
, bus
, vendor_id
):
139 cls
= bus2cls
[bus
.lower()]
140 vendor_name
= cls().get_vendor(vendor_id
)
142 # Get a list of all models we know from this vendor
143 models
= self
.stasy
.get_models_by_vendor(bus
, vendor_id
)
145 self
.render("stasy-vendor-detail.html",
146 vendor_name
=vendor_name
, models
=models
)
149 class StasyStatsModelDetail(StasyBaseHandler
):
150 def get(self
, bus
, vendor_id
, model_id
):
156 cls
= bus2cls
[bus
.lower()]
158 vendor_name
= cls().get_vendor(vendor_id
)
159 model_name
= cls().get_device(vendor_id
, model_id
)
162 self
.stasy
.get_device_percentage(bus
, vendor_id
, model_id
) * 100
164 self
.render("stasy-model-detail.html",
166 vendor_name
=vendor_name
,
168 model_name
=model_name
,
169 percentage
=percentage
)