The branch, master has been updated via d8b9cdd Implement sql-specific get_last_builds. via ccf5ceb Add convenience function for finding all recent builds. from 2d03606 Simplify build status code a bit.
http://gitweb.samba.org/?p=build-farm.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit d8b9cddfc9b7ae49554398af747927eba1cabf94 Author: Jelmer Vernooij <jel...@samba.org> Date: Wed Nov 17 10:18:41 2010 +0100 Implement sql-specific get_last_builds. commit ccf5ceb19c105f6c79cda2de561fd40c40eb0c49 Author: Jelmer Vernooij <jel...@samba.org> Date: Wed Nov 17 10:16:03 2010 +0100 Add convenience function for finding all recent builds. ----------------------------------------------------------------------- Summary of changes: buildfarm/__init__.py | 5 +++ buildfarm/sqldb.py | 4 ++ buildfarm/web/__init__.py | 75 ++++++++++++++++++++------------------------- 3 files changed, 42 insertions(+), 42 deletions(-) Changeset truncated at 500 lines: diff --git a/buildfarm/__init__.py b/buildfarm/__init__.py index 41df8d1..d185ed4 100644 --- a/buildfarm/__init__.py +++ b/buildfarm/__init__.py @@ -141,6 +141,11 @@ class BuildFarm(object): if build.tree in self.trees and build.compiler in self.compilers and build.host in hostnames: yield build + def get_last_builds(self, tree=None): + for build in self.get_new_builds(): + if tree is not None and build.tree == tree: + yield build + def get_host_builds(self, host): from buildfarm import data for compiler in self.compilers: diff --git a/buildfarm/sqldb.py b/buildfarm/sqldb.py index fdee2dd..eebc7d8 100644 --- a/buildfarm/sqldb.py +++ b/buildfarm/sqldb.py @@ -246,6 +246,10 @@ class StormCachingBuildFarm(BuildFarm): return self._get_store().find(StormBuild, StormBuild.host == host).group_by(StormBuild.compiler, StormBuild.tree) + def get_last_builds(self, tree): + extra_expr = [StormBuild.tree == tree] + return self._get_store().find(StormBuild, *extra_expr) + def commit(self): self.store.commit() diff --git a/buildfarm/web/__init__.py b/buildfarm/web/__init__.py index 2db0d05..5c771c3 100755 --- a/buildfarm/web/__init__.py +++ b/buildfarm/web/__init__.py @@ -612,36 +612,31 @@ class ViewRecentBuildsPage(BuildFarmPage): assert tree in self.buildfarm.trees, "not a build tree" assert sort_by in cmp_funcs, "not a valid sort" - t = self.buildfarm.trees[tree] - - for host in self.buildfarm.hostdb.hosts(): - for compiler in self.buildfarm.compilers: - try: - build = self.buildfarm.get_build(tree, host.name.encode("utf-8"), compiler) - status = build_status_html(myself, build) - except data.NoSuchBuildError: - pass - else: - age_mtime = build.age_mtime() - age_ctime = build.age_ctime() - try: - (revision, revision_time) = build.revision_details() - except data.MissingRevisionInfo: - pass - else: - all_builds.append([ - age_ctime, - host.platform.encode("utf-8"), - "<a href='%s?function=View+Host;host=%s;tree=%s;compiler=%s#%s'>%s</a>" - % (myself, host.name.encode("utf-8"), - tree, compiler, host.name.encode("utf-8"), - host.name.encode("utf-8")), - compiler, tree, status, build.status(), - revision_link(myself, revision, tree), - revision_time]) + for build in self.buildfarm.get_last_builds(tree=tree): + host = self.buildfarm.hostdb.host(build.host) + status = build_status_html(myself, build) + age_mtime = build.age_mtime() + age_ctime = build.age_ctime() + try: + (revision, revision_time) = build.revision_details() + except data.MissingRevisionInfo: + pass + else: + all_builds.append([ + age_ctime, + host.platform.encode("utf-8"), + "<a href='%s?function=View+Host;host=%s;tree=%s;compiler=%s#%s'>%s</a>" + % (myself, host.name.encode("utf-8"), + tree, build.compiler, host.name.encode("utf-8"), + host.name.encode("utf-8")), + build.compiler, tree, status, build.status(), + revision_link(myself, revision, tree), + revision_time]) all_builds.sort(cmp_funcs[sort_by]) + t = self.buildfarm.trees[tree] + sorturl = "%s?tree=%s;function=Recent+Builds" % (myself, tree) yield "<div id='recent-builds' class='build-section'>" @@ -785,21 +780,17 @@ class ViewSummaryPage(BuildFarmPage): broken_table = "" last_host = "" - for host in self.buildfarm.hostdb.hosts(): - for compiler in self.buildfarm.compilers: - for tree in self.buildfarm.trees: - try: - build = self.buildfarm.get_build(tree, host.name, compiler) - except data.NoSuchBuildError: - continue - age_mtime = build.age_mtime() - host_count[tree]+=1 - status = build.status() - - if status.failed: - broken_count[tree]+=1 - if "panic" in status.other_failures: - panic_count[tree]+=1 + builds = self.buildfarm.get_last_builds() + + for build in builds: + age_mtime = build.age_mtime() + host_count[build.tree]+=1 + status = build.status() + + if status.failed: + broken_count[build.tree]+=1 + if "panic" in status.other_failures: + panic_count[build.tree]+=1 return (host_count, broken_count, panic_count) def render_text(self, myself): -- build.samba.org