Package buildbot :: Package changes :: Module manager :: Class ChangeManager
[frames] | no frames]

Class ChangeManager

source code

 twisted.application.service.Service --+    
                                       |    
twisted.application.service.MultiService --+
                                           |
                                          ChangeManager

This is the master-side service which receives file change notifications from a VCS. It keeps a log of these changes, enough to provide for the HTML waterfall display, and to tell temporarily-disconnected bots what they missed while they were offline.

Change notifications come from two different kinds of sources. The first is a PB service (servicename='changemaster', perspectivename='change'), which provides a remote method called 'addChange', which should be called with a dict that has keys 'filename' and 'comments'.

The second is a list of objects derived from the buildbot.changes.base.ChangeSource class. These are added with .addSource(), which also sets the .changemaster attribute in the source to point at the ChangeMaster. When the application begins, these will be started with .start() . At shutdown time, they will be terminated with .stop() . They must be persistable. They are expected to call self.changemaster.addChange() with Change objects.

There are several different variants of the second type of source:

Instance Methods
 
__init__(self) source code
 
addSource(self, source) source code
 
removeSource(self, source) source code
 
addChange(self, change)
Deliver a file change event.
source code
 
pruneChanges(self, last_added_changeid) source code
 
eventGenerator(self, branches=[], categories=[], committers=[], minTime=0) source code
 
getChangeNumberedNow(self, changeid, t=None) source code
 
getChangeByNumber(self, changeid) source code
 
getChangesGreaterThan(self, last_changeid, t=None) source code
 
getChangesByNumber(self, changeids) source code
 
getLatestChangeNumberNow(self, branch=None, t=None) source code
 
__provides__(...)
Special descriptor for class __provides__

Inherited from twisted.application.service.MultiService: __iter__, addService, getServiceNamed, privilegedStartService, removeService, startService, stopService

Inherited from twisted.application.service.Service: __getstate__, __providedBy__, disownServiceParent, setName, setServiceParent

Class Variables
  changeHorizon = None
hash(x)
  lastPruneChanges = None
hash(x)
  name = 'changemanager'
  __implemented__ = <implementedBy buildbot.changes.manager.Chan...

Inherited from twisted.application.service.Service: parent, running

Method Details

__init__(self)
(Constructor)

source code 
Overrides: twisted.application.service.MultiService.__init__

addChange(self, change)

source code 

Deliver a file change event. The event should be a Change object. This method will timestamp the object as it is received.

__provides__(...)

 
Special descriptor for class __provides__

The descriptor caches the implementedBy info, so that
we can get declarations for objects without instance-specific
interfaces a bit quicker.

For example:

  >>> from zope.interface import Interface
  >>> class IFooFactory(Interface):
  ...     pass
  >>> class IFoo(Interface):
  ...     pass
  >>> class C(object):
  ...     implements(IFoo)
  ...     classProvides(IFooFactory)
  >>> [i.getName() for i in C.__provides__]
  ['IFooFactory']

  >>> [i.getName() for i in C().__provides__]
  ['IFoo']

Overrides: twisted.application.service.Service.__provides__

Class Variable Details

__implemented__

Value:
<implementedBy buildbot.changes.manager.ChangeManager>