Skip to content

Commit

Permalink
remove db.get_buildnums_for_brid
Browse files Browse the repository at this point in the history
This also removes the 'build' key from BuildRequestStatus.asDict(),
although it is still available in the async version.
  • Loading branch information
djmitche committed May 2, 2011
1 parent 104b1a0 commit bd4fcfb
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 16 deletions.
8 changes: 0 additions & 8 deletions master/buildbot/db/connector.py
Expand Up @@ -318,14 +318,6 @@ def _txn_get_properties_from_db(self, t, tablename, idname, id):

# BuildRequest-manipulation methods

# used by BuildRequestStatus.getBuilds
def get_buildnums_for_brid(self, brid):
return self.runInteractionNow(self._txn_get_buildnums_for_brid, brid)
def _txn_get_buildnums_for_brid(self, t, brid):
t.execute(self.quoteq("SELECT number FROM builds WHERE brid=?"),
(brid,))
return [number for (number,) in t.fetchall()]

# used by BuildRequestControl.cancel and Builder.cancelBuildRequest
def cancel_buildrequests(self, brids):
return self.runInteractionNow(self._txn_cancel_buildrequest, brids)
Expand Down
35 changes: 27 additions & 8 deletions master/buildbot/status/buildrequest.py
Expand Up @@ -14,6 +14,7 @@
# Copyright Buildbot Team Members

from zope.interface import implements
from twisted.python import log
from twisted.internet import defer
from buildbot import interfaces
from buildbot.process import buildrequest
Expand Down Expand Up @@ -84,21 +85,34 @@ def getSourceStamp(self):
def getBuilderName(self):
return self.buildername

@defer.deferredGenerator
def getBuilds(self):
builder = self.status.getBuilder(self.getBuilderName())
builds = []
buildnums = sorted(self.master.db.get_buildnums_for_brid(self.brid))

wfd = defer.waitForDeferred(
self.master.db.builds.getBuildsForRequest(self.brid))
yield wfd
buildnums = wfd.getResult()

buildnums.sort()

for buildnum in buildnums:
bs = builder.getBuild(buildnum)
if bs:
builds.append(bs)
return builds
yield builds

def subscribe(self, observer):
oldbuilds = self.getBuilds()
for bs in oldbuilds:
eventually(observer, bs)
self.status._buildrequest_subscribe(self.brid, observer)
d = self.getBuilds()
def notify_old(oldbuilds):
for bs in oldbuilds:
eventually(observer, bs)
d.addCallback(notify_old)
d.addCallback(lambda _ :
self.status._buildrequest_subscribe(self.brid, observer))
d.addErrback(log.err, 'while notifying subscribers')

def unsubscribe(self, observer):
self.status._buildrequest_unsubscribe(self.brid, observer)

Expand All @@ -119,7 +133,7 @@ def asDict(self):
result['submittedAt'] = None # not availably sync, sorry

# Transient
result['builds'] = [build.asDict() for build in self.getBuilds()]
result['builds'] = [] # not available async, sorry
return result

@defer.deferredGenerator
Expand All @@ -140,6 +154,11 @@ def asDict_async(self):
submittedAt = wfd.getResult()
result['submittedAt'] = submittedAt

result['builds'] = [ build.asDict() for build in self.getBuilds() ]
wfd = defer.waitForDeferred(
self.getBuilds())
yield wfd
builds = wfd.getResult()

result['builds'] = [ build.asDict() for build in builds ]

yield result

0 comments on commit bd4fcfb

Please sign in to comment.