+class APIv1StatsHandler(base.APIMixin, base.BaseHandler):
+ @base.negotiate
+ async def post(self):
+ stats = {
+ # CPU info
+ "cpu_model" : self.get_argument("cpu_model"),
+ "cpu_count" : self.get_argument_int("cpu_count"),
+ "cpu_arch" : self.get_argument("cpu_arch"),
+
+ # Pakfire Version
+ "pakfire_version" : self.get_argument("pakfire_version"),
+
+ # OS
+ "os_name" : self.get_argument("os_name"),
+
+ # CPU stats
+ "cpu_user" : self.get_argument_float("cpu_user"),
+ "cpu_nice" : self.get_argument_float("cpu_nice"),
+ "cpu_system" : self.get_argument_float("cpu_system"),
+ "cpu_idle" : self.get_argument_float("cpu_idle"),
+ "cpu_iowait" : self.get_argument_float("cpu_iowait"),
+ "cpu_irq" : self.get_argument_float("cpu_irq"),
+ "cpu_softirq" : self.get_argument_float("cpu_softirq"),
+ "cpu_steal" : self.get_argument_float("cpu_steal"),
+ "cpu_guest" : self.get_argument_float("cpu_guest"),
+ "cpu_guest_nice" : self.get_argument_float("cpu_guest_nice"),
+
+ # Load Average
+ "loadavg1" : self.get_argument_float("loadavg1"),
+ "loadavg5" : self.get_argument_float("loadavg5"),
+ "loadavg15" : self.get_argument_float("loadavg15"),
+
+ # Memory
+ "mem_total" : self.get_argument_int("mem_total"),
+ "mem_available" : self.get_argument_int("mem_available"),
+ "mem_used" : self.get_argument_int("mem_used"),
+ "mem_free" : self.get_argument_int("mem_free"),
+ "mem_active" : self.get_argument_int("mem_active"),
+ "mem_inactive" : self.get_argument_int("mem_inactive"),
+ "mem_buffers" : self.get_argument_int("mem_buffers"),
+ "mem_cached" : self.get_argument_int("mem_cached"),
+ "mem_shared" : self.get_argument_int("mem_shared"),
+
+ # Swap
+ "swap_total" : self.get_argument_int("swap_total"),
+ "swap_used" : self.get_argument_int("swap_used"),
+ "swap_free" : self.get_argument_int("swap_free"),
+ }
+
+ with self.db.transaction():
+ await self.builder.log_stats(**stats)
+
+ # Send OK
+ self.finish({})
+
+
+class StatsHandler(base.BaseHandler, tornado.websocket.WebSocketHandler):