Caution
Buildbot no longer supports Python 2.7 on the Buildbot master.
2.12.5. Transition to “worker” terminology in BuildBot 0.9.0¶
Since version 0.9.0 of Buildbot “slave”-based terminology is deprecated in favor of “worker”-based terminology.
API change is done in backward compatible way, so old “slave”-containing classes, functions and attributes are still available and can be used. Old API support will be removed in the future versions of Buildbot.
Rename of API introduced in beta versions of Buildbot 0.9.0 done without providing fallback. See release notes for the list of breaking changes of private interfaces. The fallbacks have been removed in Buildbot version 2.0.0.
2.12.5.1. Old names fallback settings¶
Use of obsolete names will raise Python warnings with category
buildbot.worker_transition.DeprecatedWorkerAPIWarning.
By default these warnings are printed in the application log.
This behaviour can be changed by setting appropriate Python warnings settings
via Python’s warnings module:
import warnings
from buildbot.worker_transition import DeprecatedWorkerAPIWarning
# Treat old-name usage as errors:
warnings.simplefilter("error", DeprecatedWorkerAPIWarning)
See Python’s warnings module documentation for complete list of
available actions, in particular warnings can be disabled using
"ignore" action.
It’s recommended to configure warnings inside buildbot.tac, before
using any other Buildbot classes.
2.12.5.2. Changed API¶
In general “Slave” and “Buildslave” parts in identifiers and messages were replaced with “Worker”; “SlaveBuilder” with “WorkerForBuilder”.
Below is the list of changed API (use of old names from this list will work). Note that some of these symbols are not included in Buildbot’s public API. Compatibility is provided as a convenience to those using the private symbols anyway.
- buildbot.interfaces.IBuildSlavewas renamed to- IWorker
- buildbot.interfaces.NoSlaveError(private) left as is, but deprecated (it shouldn’t be used at all)
- buildbot.interfaces.BuildSlaveTooOldErrorwas renamed to- WorkerTooOldError
- buildbot.interfaces.LatentBuildSlaveFailedToSubstantiate(private) was renamed to- LatentWorkerFailedToSubstantiate
- buildbot.interfaces.ILatentBuildSlavewas renamed to- ILatentWorker
- buildbot.interfaces.ISlaveStatus(will be removed in 0.9.x) was renamed to- IWorkerStatus
- buildbot.buildslavemodule with all contents was renamed to- buildbot.worker
- buildbot.buildslave.AbstractBuildSlavewas renamed to- buildbot.worker.AbstractWorker
- buildbot.buildslave.AbstractBuildSlave.slavename(private) was renamed to- buildbot.worker.AbstractWorker.workername
- buildbot.buildslave.AbstractLatentBuildSlavewas renamed to- buildbot.worker.AbstractLatentWorker
- buildbot.buildslave.BuildSlavewas renamed to- buildbot.worker.Worker
- buildbot.buildslave.ec2was renamed to- buildbot.worker.ec2
- buildbot.buildslave.ec2.EC2LatentBuildSlavewas renamed to- buildbot.worker.ec2.EC2LatentWorker
- buildbot.buildslave.libvirtwas renamed to- buildbot.worker.libvirt
- buildbot.buildslave.libvirt.LibVirtSlavewas renamed to- buildbot.worker.libvirt.LibVirtWorker
- buildbot.buildslave.openstackwas renamed to- buildbot.worker.openstack
- buildbot.buildslave.openstack.OpenStackLatentBuildSlavewas renamed to- buildbot.worker.openstack.OpenStackLatentWorker
- buildbot.config.MasterConfig.slaveswas renamed to- workers
- buildbot.config.BuilderConfigconstructor keyword argument- slavenamewas renamed to- workername
- buildbot.config.BuilderConfigconstructor keyword argument- slavenameswas renamed to- workernames
- buildbot.config.BuilderConfigconstructor keyword argument- slavebuilddirwas renamed to- workerbuilddir
- buildbot.config.BuilderConfigconstructor keyword argument- nextSlavewas renamed to- nextWorker
- buildbot.config.BuilderConfig.slavenameswas renamed to- workernames
- buildbot.config.BuilderConfig.slavebuilddirwas renamed to- workerbuilddir
- buildbot.config.BuilderConfig.nextSlavewas renamed to- nextWorker
- buildbot.process.slavebuilderwas renamed to- buildbot.process.workerforbuilder
- buildbot.process.slavebuilder.AbstractSlaveBuilderwas renamed to- buildbot.process.workerforbuilder.AbstractWorkerForBuilder
- buildbot.process.slavebuilder.AbstractSlaveBuilder.slavewas renamed to- buildbot.process.workerforbuilder.AbstractWorkerForBuilder.worker
- buildbot.process.slavebuilder.SlaveBuilderwas renamed to- buildbot.process.workerforbuilder.WorkerForBuilder
- buildbot.process.slavebuilder.LatentSlaveBuilderwas renamed to- buildbot.process.workerforbuilder.LatentWorkerForBuilder
- buildbot.process.build.Build.getSlaveNamewas renamed to- getWorkerName
- buildbot.process.build.Build.slavenamewas renamed to- workername
- buildbot.process.builder.enforceChosenSlavewas renamed to- enforceChosenWorker
- buildbot.process.builder.Builder.canStartWithSlavebuilderwas renamed to- canStartWithWorkerForBuilder
- buildbot.process.builder.Builder.attaching_slaveswas renamed to- attaching_workers
- buildbot.process.builder.Builder.slaveswas renamed to- workers
- buildbot.process.builder.Builder.addLatentSlavewas renamed to- addLatentWorker
- buildbot.process.builder.Builder.getAvailableSlaveswas renamed to- getAvailableWorkers
- buildbot.schedulers.forcesched.BuildslaveChoiceParameterwas renamed to- WorkerChoiceParameter
- buildbot.process.buildstep.BuildStep.buildslavewas renamed to- buildbot.process.buildstep.BuildStep.worker(also it was moved from class static attribute to instance attribute)
- buildbot.process.buildstep.BuildStep.setBuildSlavewas renamed to- buildbot.process.buildstep.BuildStep.setWorker
- buildbot.process.buildstep.BuildStep.slaveVersionwas renamed to- buildbot.process.buildstep.BuildStep.workerVersion
- buildbot.process.buildstep.BuildStep.slaveVersionIsOlderThanwas renamed to- buildbot.process.buildstep.BuildStep.workerVersionIsOlderThan
- buildbot.process.buildstep.BuildStep.checkSlaveHasCommandwas renamed to- buildbot.process.buildstep.BuildStep.checkWorkerHasCommand
- buildbot.process.buildstep.BuildStep.getSlaveNamewas renamed to- buildbot.process.buildstep.BuildStep.getWorkerName
- buildbot.locks.SlaveLockwas renamed to- buildbot.locks.WorkerLock
- buildbot.locks.SlaveLock.maxCountForSlavewas renamed to- buildbot.locks.WorkerLock.maxCountForWorker
- buildbot.locks.SlaveLockconstructor argument- maxCountForSlavewas renamed to- maxCountForWorker
- buildbot.steps.slavewas renamed to- buildbot.steps.worker
- buildbot.steps.slave.SlaveBuildStepwas renamed to- buildbot.steps.worker.WorkerBuildStep
- buildbot.steps.slave.CompositeStepMixin.getFileContentFromSlavewas renamed to- buildbot.steps.worker.CompositeStepMixin.getFileContentFromWorker
- buildbot.steps.transfer.FileUpload.slavesrcwas renamed- workersrc
- buildbot.steps.transfer.FileUploadconstructor argument- slavesrcwas renamed to- workersrc
- buildbot.steps.transfer.DirectoryUpload.slavesrcwas renamed to- workersrc
- buildbot.steps.transfer.DirectoryUploadconstructor argument- slavesrcwas renamed to- workersrc
- buildbot.steps.transfer.MultipleFileUpload.slavesrcswas renamed to- workersrcs
- buildbot.steps.transfer.MultipleFileUploadconstructor argument- slavesrcswas renamed to- workersrcs
- buildbot.steps.transfer.FileDownload.slavedestwas renamed to- workerdest
- buildbot.steps.transfer.FileDownloadconstructor argument- slavedestwas renamed to- workerdest
- buildbot.steps.transfer.StringDownload.slavedestwas renamed to- workerdest
- buildbot.steps.transfer.StringDownloadconstructor argument- slavedestwas renamed to- workerdest
- buildbot.steps.transfer.JSONStringDownload.slavedestwas renamed to- workerdest
- buildbot.steps.transfer.JSONStringDownloadconstructor argument- slavedestwas renamed to- workerdest
- buildbot.steps.transfer.JSONPropertiesDownload.slavedestwas renamed to- workerdest
- buildbot.steps.transfer.JSONPropertiesDownloadwas renamed to constructor argument- slavedestwas renamed to- workerdest
- buildbot.process.remotecommand.RemoteCommand.buildslavewas renamed to- worker
2.12.5.3. Plugins¶
buildbot.buildslave entry point was renamed to buildbot.worker, new
plugins should be updated accordingly.
Plugins that use old buildbot.buildslave entry point are still available
in the configuration file in the same way, as they were in versions prior
0.9.0:
from buildbot.plugins import buildslave  # deprecated, use "worker" instead
w = buildslave.ThirdPartyWorker()
But also they available using new namespace inside configuration
file, so its recommended to use buildbot.plugins.worker
name even if plugin uses old entry points:
from buildbot.plugins import worker
# ThirdPartyWorker can be defined in using `buildbot.buildslave` entry
# point, this still will work.
w = worker.ThirdPartyWorker()
Other changes:
- buildbot.plugins.util.BuildslaveChoiceParameteris deprecated in favor of- WorkerChoiceParameter.
- buildbot.plugins.util.enforceChosenSlaveis deprecated in favor of- enforceChosenWorker.
- buildbot.plugins.util.SlaveLockis deprecated in favor of- WorkerLock.
2.12.5.4. BuildmasterConfig changes¶
- c['slaves']was replaced with- c['workers']. Use of- c['slaves']will work, but is considered deprecated, and will be removed in the future versions of Buildbot.
- Configuration key c['slavePortnum']is deprecated in favor ofc['protocols']['pb']['port'].
2.12.5.5. Docker latent worker changes¶
In addition to class being renamed, environment variables that are set inside
container SLAVENAME and SLAVEPASS were renamed to
WORKERNAME and WORKERPASS accordingly.
Old environment variable are still available, but are deprecated and will be
removed in the future.
2.12.5.6. EC2 latent worker changes¶
Use of default values of keypair_name and security_name
constructor arguments of buildbot.worker.ec2.EC2LatentWorker
is deprecated. Please specify them explicitly.
2.12.5.7. steps.slave.SetPropertiesFromEnv changes¶
In addition to buildbot.steps.slave module being renamed to
buildbot.steps.worker, default source value for
SetPropertiesFromEnv was changed from
"SlaveEnvironment" to "WorkerEnvironment".
2.12.5.8. Local worker changes¶
Working directory for local workers were changed from
master-basedir/slaves/name to master-basedir/workers/name.
2.12.5.9. Worker Manager changes¶
slave_config function argument was renamed to worker_config.
2.12.5.10. Properties¶
- slavenameproperty is deprecated in favor of- workernameproperty. Render of deprecated property will produce warning.- buildbot.worker.AbstractWorker(previously- buildbot.buildslave.AbstractBuildSlave)- slavenameproperty source were changed from- BuildSlaveto- Worker (deprecated)- AbstractWorkernow sets- workernameproperty with source- Workerwhich should be used.
2.12.5.11. Metrics¶
- buildbot.process.metrics.AttachedSlavesWatcherwas renamed to- buildbot.process.metrics.AttachedWorkersWatcher.
- buildbot.worker.manager.WorkerManager.name(previously- buildbot.buildslave.manager.BuildslaveManager.name) metric measurement class name changed from- BuildslaveManagerto- WorkerManager
- buildbot.worker.manager.WorkerManager.managed_services_name(previously- buildbot.buildslave.manager.BuildslaveManager.managed_services_name`) metric measurement managed service name changed from ``buildslavesto- workers
Renamed events:
| Old name | New name | 
|---|---|
| AbstractBuildSlave.attached_slaves | AbstractWorker.attached_workers | 
| BotMaster.attached_slaves | BotMaster.attached_workers | 
| BotMaster.slaveLost() | BotMaster.workerLost() | 
| BotMaster.getBuildersForSlave() | BotMaster.getBuildersForWorker() | 
| AttachedSlavesWatcher | AttachedWorkersWatcher | 
| attached_slaves | attached_workers | 
2.12.5.12. Database¶
Schema changes:
| Old name | New name | 
|---|---|
| buildslavestable | workers | 
| builds.buildslaveid(not ForeignKey) column | workerid(now ForeignKey) | 
| configured_buildslavestable | configured_workers | 
| configured_buildslaves.buildslaveid(ForeignKey) column | workerid | 
| connected_buildslavestable | connected_workers | 
| connected_buildslaves.buildslaveid(ForeignKey) column | workerid | 
| buildslaves_nameindex | workers_name | 
| configured_slaves_buildmasteridindex | configured_workers_buildmasterid | 
| configured_slaves_slavesindex | configured_workers_workers | 
| configured_slaves_identityindex | configured_workers_identity | 
| connected_slaves_masteridindex | connected_workers_masterid | 
| connected_slaves_slavesindex | connected_workers_workers | 
| connected_slaves_identityindex | connected_workers_identity | 
| builds_buildslaveidindex | builds_workerid | 
List of database-related changes in API (fallback for old API is provided):
- buildbot.db.buildslaveswas renamed to- workers
- buildbot.db.buildslaves.BuildslavesConnectorComponentwas renamed to- buildbot.db.workers.WorkersConnectorComponent
- buildbot.db.buildslaves.BuildslavesConnectorComponent.getBuildslaves(rewritten in nine) was renamed to- buildbot.db.workers.WorkersConnectorComponent.getWorkers
- buildbot.db.connector.DBConnector.buildslaveswas renamed to- buildbot.db.connector.DBConnector.workers
2.12.5.13. usePTY changes¶
usePTY default value has been changed from slave-config to None (use of slave-config will still work, but discouraged).
2.12.5.14. buildbot-worker¶
buildbot-slave package has been renamed to buildbot-worker.
buildbot-worker has backward incompatible changes and requires buildmaster >= 0.9.0b8.
buildbot-slave from 0.8.x will work with both 0.8.x and 0.9.x versions of buildmaster, so there is no need to upgrade currently deployed buildbot-slaves during switch from 0.8.x to 0.9.x.
| master 0.8.x | master 0.9.x | |
|---|---|---|
| buildbot-slave | yes | yes | 
| buildbot-worker | no | yes | 
buildbot-worker doesn’t support worker-side specification of usePTY (with --usepty command line switch of buildbot-worker create-worker), you need to specify this option on master side.
getSlaveInfo remote command was renamed to getWorkerInfo in buildbot-worker.