Caution
Buildbot no longer supports Python 2.7 on the Buildbot master.
3.10.13. Protocols¶
To exchange information over the network between master and worker, we need to use a protocol.
buildbot.worker.protocols.base provide interfaces to implement
wrappers around protocol specific calls, so other classes which use them do not need
to know about protocol calls or handle protocol specific exceptions.
- 
class buildbot.worker.protocols.base.Listener(master)¶
- Parameters
- master – - buildbot.master.BuildMasterinstance
 - Responsible for spawning Connection instances and updating registrations. Protocol-specific subclasses are instantiated with protocol-specific parameters by the buildmaster during startup. 
- 
class buildbot.worker.protocols.base.Connection(master, worker)¶
- Represents connection to single worker. - 
proxies¶
- Dictionary containing mapping between - Implclasses and- Proxyclass for this protocol. This may be overridden by a subclass to declare its proxy implementations.
 - 
createArgsProxies(args)¶
- Returns
- shallow copy of args dictionary with proxies instead of impls 
 - Helper method that will use - proxies, and replace- Implobjects by specific- Proxycounterpart.
 - 
notifyOnDisconnect(cb)¶
- Parameters
- cb – callback 
- Returns
- buildbot.util.subscriptions.Subscription
 - Register a callback to be called if a worker gets disconnected. 
 - 
loseConnection()¶
- Close connection. 
 - 
remotePrint(message)¶
- Parameters
- message (string) – message for worker 
- Returns
- Deferred 
 - Print message to worker log file. 
 - 
remoteGetWorkerInfo()¶
- Returns
- Deferred 
 - Get worker information, commands and version, put them in dictionary, and then return back. 
 - 
remoteSetBuilderList(builders)¶
- Parameters
- builders (List) – list with wanted builders 
- Returns
- Deferred containing PB references XXX 
 - Take a list with wanted builders, send them to the worker, and return the list with created builders. 
 - 
remoteStartCommand(remoteCommand, builderName, commandId, commandName, args)¶
- Parameters
- remoteCommand – - RemoteCommandImplinstance
- builderName (string) – self explanatory 
- commandId (string) – command number 
- commandName (string) – command which will be executed on worker 
- args (List) – arguments for that command 
 
- Returns
- Deferred 
 - Start command on the worker. 
 - 
remoteShutdown()¶
- Returns
- Deferred 
 - Shutdown the worker, causing its process to halt permanently. 
 - 
remoteStartBuild(builderName)¶
- Parameters
- builderName – name of the builder for which the build is starting 
- Returns
- Deferred 
 - Start a build. 
 - 
remoteInterruptCommand(builderName, commandId, why)¶
- Parameters
- builderName (string) – self explanatory 
- commandId (string) – command number 
- why (string) – reason to interrupt 
 
- Returns
- Deferred 
 - Interrupt the command executed on builderName with given commandId on worker, and print reason “why” to worker logs. 
 
- 
The following classes describe the worker -> master part of the protocol.
In order to support old workers, we must make sure we do not change the current pb protocol.
This is why we implement a Impl vs Proxy method.
All the objects that are referenced from the workers for remote calls have an Impl and a Proxy base class in this module.
Impl classes are subclassed by Buildbot master, and implement the actual logic for the protocol API.
Proxy classes are implemented by the worker/master protocols, and implement the demux and de-serialization of protocol calls.
On worker sides, those proxy objects are replaced by a proxy object having a single method to call master side methods:
- 
class buildbot.worker.protocols.base.workerProxyObject¶
- 
callRemote(message, *args, **kw)¶
- Calls the method - "remote_" + messageon master side
 
- 
- 
class buildbot.worker.protocols.base.RemoteCommandImpl¶
- Represents a RemoteCommand status controller. - 
remote_update(updates)¶
- Parameters
- updates – dictionary of updates 
 - Called when the workers have updates to the current remote command. - Possible keys for updates are: - stdout: Some logs where captured in remote command’s stdout. value:- <data> as string
- stderr: Some logs where captured in remote command’s stderr. value:- <data> as string
- header: Remote command’s header text. value:- <data> as string
- log: One of the watched logs has received some text. value:- (<logname> as string, <data> as string)
- rc: Remote command exited with a return code. value:- <rc> as integer
- elapsed: Remote command has taken <elapsed> time. value:- <elapsed seconds> as float
- stat: Sent by the- statcommand with the result of the os.stat, converted to a tuple. value:- <stat> as tuple
- files: Sent by the- globcommand with the result of the glob.glob. value:- <files> as list of string
- got_revision: Sent by the source commands with the revision checked out. value:- <revision> as string
- repo_downloaded: sent by the- repocommand with the list of patches downloaded by repo. value:- <downloads> as list of string
 
 
- 
- 
class buildbot.worker.protocols.base.FileWriterImpl¶
- Class used to implement data transfer between worker and master.