if build_times:
return build_times[0]
- def get_types_stats(self):
- res = self.db.query("SELECT type, COUNT(*) AS count FROM builds GROUP BY type")
-
- if not res:
- return {}
-
- ret = {}
- for row in res:
- ret[row.type] = row.count
-
- return ret
-
class Build(base.Object):
def __init__(self, pakfire, id, data=None):
if jobs:
return jobs.count
- def get_state_stats(self):
- res = self.db.query("SELECT state, COUNT(*) AS count FROM jobs GROUP BY state")
-
- if not res:
- return {}
-
- ret = {
- "new" : 0,
- "pending" : 0,
- "running" : 0,
- "finished" : 0,
- "dispatching" : 0,
- "uploading" : 0,
- "failed" : 0,
- "aborted" : 0,
- "temporary_failed" : 0,
- "dependency_error" : 0,
- "download_error" : 0,
- "deleted" : 0,
- }
- for row in res:
- ret[row.state] = int(row.count)
-
- return ret
-
class Job(base.DataObject):
table = "jobs"
(r"/error/test", handlers.ErrorTestHandler),
(r"/error/test/(\d+)", handlers.ErrorTestHandler),
- # Statistics
- (r"/statistics/builds/types", handlers.StatsBuildsTypesHandler),
- (r"/statistics/jobs/queue", handlers.StatsJobsQueueHandler),
- (r"/statistics/jobs/states", handlers.StatsJobsStatesHandler),
-
# Builds
(r"/builds/create", handlers.BuildsCreateHandler),
(r"/builds/(.*)", handlers.BuildsGetHandler),
raise tornado.web.HTTPError(error_code)
-class StatsBuildsTypesHandler(BaseHandler):
- def get(self):
- ret = {}
-
- types = self.backend.builds.get_types_stats()
- for type, count in types.items():
- ret["builds_type_%s" % type] = count
-
- self.write(ret)
-
-
-class StatsJobsHandler(BaseHandler):
- def get(self):
- ret = {}
-
- self.write(ret)
-
-
-class StatsJobsStatesHandler(BaseHandler):
- def get(self):
- ret = {}
-
- states = self.backend.jobs.get_state_stats()
- for state, count in states.items():
- ret["jobs_state_%s" % state] = count
-
- self.write(ret)
-
-
-class StatsJobsQueueHandler(BaseHandler):
- def get(self):
- ret = {}
-
- # Queue length(s).
- ret["job_queue_length"] = len(self.backend.jobqueue)
-
- # Average waiting time.
- ret["job_queue_avg_wait_time"] = self.backend.jobqueue.average_waiting_time
-
- self.write(ret)
-
-
# Uploads
class UploadsCreateHandler(BaseHandler):
{{ _("They one at the top is next.") }}
</p>
+ {{ _("Average waiting time: %s") % format_time(average_waiting_time.total_seconds()) }}
+
{% if jobs %}
{% module JobsList(jobs) %}
{% else %}
class BuildQueueHandler(BaseHandler):
def get(self):
- self.render("build-queue.html", jobs=self.backend.jobqueue)
+ self.render("build-queue.html", jobs=self.backend.jobqueue,
+ average_waiting_time=self.backend.jobqueue.average_waiting_time)
class BuildDetailCommentHandler(BaseHandler):