diff --git a/master/buildbot/data/builds.py b/master/buildbot/data/builds.py index db9e1a6c324..155fa138aa2 100644 --- a/master/buildbot/data/builds.py +++ b/master/buildbot/data/builds.py @@ -137,30 +137,35 @@ class BuildsEndpoint(Db2DataMixin, base.BuildNestingMixin, base.Endpoint): /builders/n:builderid/builds /builders/i:buildername/builds /buildrequests/n:buildrequestid/builds + /changes/n:changeid/builds /workers/n:workerid/builds """ rootLinkName = 'builds' @defer.inlineCallbacks def get(self, resultSpec, kwargs): - # following returns None if no filter - # true or false, if there is a complete filter - builderid = None - if 'builderid' in kwargs or 'buildername' in kwargs: - builderid = yield self.getBuilderId(kwargs) - if builderid is None: - return [] - complete = resultSpec.popBooleanFilter("complete") - buildrequestid = resultSpec.popIntegerFilter("buildrequestid") - resultSpec.fieldMapping = self.fieldMapping - builds = yield self.master.db.builds.getBuilds( - builderid=builderid, - buildrequestid=kwargs.get('buildrequestid', buildrequestid), - workerid=kwargs.get('workerid'), - complete=complete, - resultSpec=resultSpec) - # returns properties' list - filters = resultSpec.popProperties() + changeid = kwargs.get('changeid') + if changeid is not None: + builds = yield self.master.db.builds.getBuildsForChange(changeid) + else: + # following returns None if no filter + # true or false, if there is a complete filter + builderid = None + if 'builderid' in kwargs or 'buildername' in kwargs: + builderid = yield self.getBuilderId(kwargs) + if builderid is None: + return [] + complete = resultSpec.popBooleanFilter("complete") + buildrequestid = resultSpec.popIntegerFilter("buildrequestid") + resultSpec.fieldMapping = self.fieldMapping + builds = yield self.master.db.builds.getBuilds( + builderid=builderid, + buildrequestid=kwargs.get('buildrequestid', buildrequestid), + workerid=kwargs.get('workerid'), + complete=complete, + resultSpec=resultSpec) + # returns properties' list + filters = resultSpec.popProperties() buildscol = [] for b in builds: data = yield self.db2data(b)