Skip to content

Instantly share code, notes, and snippets.

@benallard
Created November 20, 2014 17:09
Show Gist options
  • Save benallard/77930537cd91bd85134a to your computer and use it in GitHub Desktop.
Save benallard/77930537cd91bd85134a to your computer and use it in GitHub Desktop.
A buildbot utility class to create a bunch of Builders for a list of slaves.
class MatrixBuilders(object):
""" Create a bunch of builders, one per slave, and the
corresponding schedulers """
def __init__(self, baseName, factory, slaveNames):
""" Create a MatrixBuilder, with the factory for each slave """
self._baseName = baseName
self._factory = factory
self._slaves = slaveNames
def builderName(self, slaveName):
""" Override me if you want, make sure generated names are
unique for each slave """
return '_'.join([self._baseName, slaveName])
def getBuilders(self, extra_args={}):
""" Use me like that::
c['builders'].extend(myMatrix.getBuilders())
"""
for slaveName in self._slaves:
yield util.BuilderConfig(
name=self.builderName(slaveName),
slavenames=[slaveName],
factory=self._factory,
**extra_args)
def getScheduler(self, klass, extra_args={}):
""" Use me like that::
c['schedulers'].append(myMatrix.getScheduler(
schedulers.SingleBranchScheduler,
dict(treeStableTimer=0,
change_filter=...,
codebases={...})))
"""
builderNames = []
for slaveName in self._slaves:
builderNames.append(self.builderName(slaveName))
return klass(name=self._baseName,
builderNames=builderNames,
**extra_args)
@sa2ajj
Copy link

sa2ajj commented Nov 20, 2014

L27: **extra_args

L36-38: builderNames = [ ... for ...]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment