2.12.7. 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.7.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.7.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.IBuildSlave
was renamed toIWorker
buildbot.interfaces.NoSlaveError
(private) left as is, but deprecated (it shouldn’t be used at all)buildbot.interfaces.BuildSlaveTooOldError
was renamed toWorkerTooOldError
buildbot.interfaces.LatentBuildSlaveFailedToSubstantiate
(private) was renamed toLatentWorkerFailedToSubstantiate
buildbot.interfaces.ILatentBuildSlave
was renamed toILatentWorker
buildbot.interfaces.ISlaveStatus
(will be removed in 0.9.x) was renamed toIWorkerStatus
buildbot.buildslave
module with all contents was renamed tobuildbot.worker
buildbot.buildslave.AbstractBuildSlave
was renamed tobuildbot.worker.AbstractWorker
buildbot.buildslave.AbstractBuildSlave.slavename
(private) was renamed tobuildbot.worker.AbstractWorker.workername
buildbot.buildslave.AbstractLatentBuildSlave
was renamed tobuildbot.worker.AbstractLatentWorker
buildbot.buildslave.BuildSlave
was renamed tobuildbot.worker.Worker
buildbot.buildslave.ec2
was renamed tobuildbot.worker.ec2
buildbot.buildslave.ec2.EC2LatentBuildSlave
was renamed tobuildbot.worker.ec2.EC2LatentWorker
buildbot.buildslave.libvirt
was renamed tobuildbot.worker.libvirt
buildbot.buildslave.libvirt.LibVirtSlave
was renamed tobuildbot.worker.libvirt.LibVirtWorker
buildbot.buildslave.openstack
was renamed tobuildbot.worker.openstack
buildbot.buildslave.openstack.OpenStackLatentBuildSlave
was renamed tobuildbot.worker.openstack.OpenStackLatentWorker
buildbot.config.MasterConfig.slaves
was renamed toworkers
buildbot.config.BuilderConfig
constructor keyword argumentslavename
was renamed toworkername
buildbot.config.BuilderConfig
constructor keyword argumentslavenames
was renamed toworkernames
buildbot.config.BuilderConfig
constructor keyword argumentslavebuilddir
was renamed toworkerbuilddir
buildbot.config.BuilderConfig
constructor keyword argumentnextSlave
was renamed tonextWorker
buildbot.config.BuilderConfig.slavenames
was renamed toworkernames
buildbot.config.BuilderConfig.slavebuilddir
was renamed toworkerbuilddir
buildbot.config.BuilderConfig.nextSlave
was renamed tonextWorker
buildbot.process.slavebuilder
was renamed tobuildbot.process.workerforbuilder
buildbot.process.slavebuilder.AbstractSlaveBuilder
was renamed tobuildbot.process.workerforbuilder.AbstractWorkerForBuilder
buildbot.process.slavebuilder.AbstractSlaveBuilder.slave
was renamed tobuildbot.process.workerforbuilder.AbstractWorkerForBuilder.worker
buildbot.process.slavebuilder.SlaveBuilder
was renamed tobuildbot.process.workerforbuilder.WorkerForBuilder
buildbot.process.slavebuilder.LatentSlaveBuilder
was renamed tobuildbot.process.workerforbuilder.LatentWorkerForBuilder
buildbot.process.build.Build.getSlaveName
was renamed togetWorkerName
buildbot.process.build.Build.slavename
was renamed toworkername
buildbot.process.builder.enforceChosenSlave
was renamed toenforceChosenWorker
buildbot.process.builder.Builder.canStartWithSlavebuilder
was renamed tocanStartWithWorkerForBuilder
buildbot.process.builder.Builder.attaching_slaves
was renamed toattaching_workers
buildbot.process.builder.Builder.slaves
was renamed toworkers
buildbot.process.builder.Builder.addLatentSlave
was renamed toaddLatentWorker
buildbot.process.builder.Builder.getAvailableSlaves
was renamed togetAvailableWorkers
buildbot.schedulers.forcesched.BuildslaveChoiceParameter
was renamed toWorkerChoiceParameter
buildbot.process.buildstep.BuildStep.buildslave
was renamed tobuildbot.process.buildstep.BuildStep.worker
(also it was moved from class static attribute to instance attribute)buildbot.process.buildstep.BuildStep.setBuildSlave
was renamed tobuildbot.process.buildstep.BuildStep.setWorker
buildbot.process.buildstep.BuildStep.slaveVersion
was renamed tobuildbot.process.buildstep.BuildStep.workerVersion
buildbot.process.buildstep.BuildStep.slaveVersionIsOlderThan
was renamed tobuildbot.process.buildstep.BuildStep.workerVersionIsOlderThan
buildbot.process.buildstep.BuildStep.checkSlaveHasCommand
was renamed tobuildbot.process.buildstep.BuildStep.checkWorkerHasCommand
buildbot.process.buildstep.BuildStep.getSlaveName
was renamed tobuildbot.process.buildstep.BuildStep.getWorkerName
buildbot.locks.SlaveLock
was renamed tobuildbot.locks.WorkerLock
buildbot.locks.SlaveLock.maxCountForSlave
was renamed tobuildbot.locks.WorkerLock.maxCountForWorker
buildbot.locks.SlaveLock
constructor argumentmaxCountForSlave
was renamed tomaxCountForWorker
buildbot.steps.slave
was renamed tobuildbot.steps.worker
buildbot.steps.slave.SlaveBuildStep
was renamed tobuildbot.steps.worker.WorkerBuildStep
buildbot.steps.slave.CompositeStepMixin.getFileContentFromSlave
was renamed tobuildbot.steps.worker.CompositeStepMixin.getFileContentFromWorker
buildbot.steps.transfer.FileUpload.slavesrc
was renamedworkersrc
buildbot.steps.transfer.FileUpload
constructor argumentslavesrc
was renamed toworkersrc
buildbot.steps.transfer.DirectoryUpload.slavesrc
was renamed toworkersrc
buildbot.steps.transfer.DirectoryUpload
constructor argumentslavesrc
was renamed toworkersrc
buildbot.steps.transfer.MultipleFileUpload.slavesrcs
was renamed toworkersrcs
buildbot.steps.transfer.MultipleFileUpload
constructor argumentslavesrcs
was renamed toworkersrcs
buildbot.steps.transfer.FileDownload.slavedest
was renamed toworkerdest
buildbot.steps.transfer.FileDownload
constructor argumentslavedest
was renamed toworkerdest
buildbot.steps.transfer.StringDownload.slavedest
was renamed toworkerdest
buildbot.steps.transfer.StringDownload
constructor argumentslavedest
was renamed toworkerdest
buildbot.steps.transfer.JSONStringDownload.slavedest
was renamed toworkerdest
buildbot.steps.transfer.JSONStringDownload
constructor argumentslavedest
was renamed toworkerdest
buildbot.steps.transfer.JSONPropertiesDownload.slavedest
was renamed toworkerdest
buildbot.steps.transfer.JSONPropertiesDownload
was renamed to constructor argumentslavedest
was renamed toworkerdest
buildbot.process.remotecommand.RemoteCommand.buildslave
was renamed toworker
2.12.7.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.BuildslaveChoiceParameter
is deprecated in favor ofWorkerChoiceParameter
.buildbot.plugins.util.enforceChosenSlave
is deprecated in favor ofenforceChosenWorker
.buildbot.plugins.util.SlaveLock
is deprecated in favor ofWorkerLock
.
2.12.7.4. BuildmasterConfig
changes
c['slaves']
was replaced withc['workers']
. Use ofc['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.7.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.7.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.7.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.7.8. Local worker changes
Working directory for local workers were changed from
master-basedir/slaves/name
to master-basedir/workers/name
.
2.12.7.9. Worker Manager changes
slave_config
function argument was renamed to worker_config
.
2.12.7.10. Properties
slavename
property is deprecated in favor ofworkername
property. Render of deprecated property will produce warning.buildbot.worker.AbstractWorker
(previouslybuildbot.buildslave.AbstractBuildSlave
)slavename
property source were changed fromBuildSlave
toWorker (deprecated)
AbstractWorker
now setsworkername
property with sourceWorker
which should be used.
2.12.7.11. Metrics
buildbot.process.metrics.AttachedSlavesWatcher
was renamed tobuildbot.process.metrics.AttachedWorkersWatcher
.buildbot.worker.manager.WorkerManager.name
(previouslybuildbot.buildslave.manager.BuildslaveManager.name
) metric measurement class name changed fromBuildslaveManager
toWorkerManager
buildbot.worker.manager.WorkerManager.managed_services_name
(previouslybuildbot.buildslave.manager.BuildslaveManager.managed_services_name`) metric measurement managed service name changed from ``buildslaves
toworkers
Renamed events:
Old name |
New name |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
2.12.7.12. Database
Schema changes:
Old name |
New name |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List of database-related changes in API (fallback for old API is provided):
buildbot.db.buildslaves
was renamed toworkers
buildbot.db.buildslaves.BuildslavesConnectorComponent
was renamed tobuildbot.db.workers.WorkersConnectorComponent
buildbot.db.buildslaves.BuildslavesConnectorComponent.getBuildslaves
(rewritten in nine) was renamed tobuildbot.db.workers.WorkersConnectorComponent.getWorkers
buildbot.db.connector.DBConnector.buildslaves
was renamed tobuildbot.db.connector.DBConnector.workers
2.12.7.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.7.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
.