Caution

Buildbot no longer supports Python 2.7 on the Buildbot master.

3.8.11. Source stamps connector

class buildbot.db.sourcestamps.SourceStampsConnectorComponent

This class manages source stamps, as stored in the database. A source stamp uniquely identifies a particular version of a single codebase. Source stamps are identified by their ID. It is safe to use sourcestamp ID equality as a proxy for source stamp equality. For example, all builds of a particular version of a codebase will share the same sourcestamp ID. This equality does not extend to patches: two sourcestamps generated with exactly the same patch will have different IDs.

Relative source stamps have a revision of None, meaning “whatever the latest is when this sourcestamp is interpreted”. While such source stamps may correspond to a wide array of revisions over the lifetime of a Buildbot installation, they will only ever have one ID.

An instance of this class is available at master.db.sourcestamps.

Sourcestamps are represented by dictionaries with the following keys:

  • ssid

  • branch (branch, or None for default branch)

  • revision (revision, or None to indicate the latest revision, in which case this is a relative source stamp)

  • patchid (ID of the patch)

  • patch_body (body of the patch, or None)

  • patch_level (directory stripping level of the patch, or None)

  • patch_subdir (subdirectory in which to apply the patch, or None)

  • patch_author (author of the patch, or None)

  • patch_comment (comment for the patch, or None)

  • repository (repository containing the source; never None)

  • project (project this source is for; never None)

  • codebase (codebase this stamp is in; never None)

  • created_at (timestamp when this stamp was first created)

Note that the patch body is a bytestring, not a unicode string.

findSourceStampId(branch=None, revision=Node, repository=None, project=None, patch_body=None, patch_level=None, patch_author=None, patch_comment=None, patch_subdir=None)
Parameters:
  • branch (unicode string or None) –

  • revision (unicode string or None) –

  • repository (unicode string or None) –

  • project (unicode string or None) –

  • codebase (unicode string (required)) –

  • patch_body (bytes or unicode string or None) – patch body

  • patch_level (integer or None) – patch level

  • patch_author (unicode string or None) – patch author

  • patch_comment (unicode string or None) – patch comment

  • patch_subdir (unicode string or None) – patch subdir

Returns:

ssid, via Deferred

Create a new SourceStamp instance with the given attributes, or find an existing one. In either case, return its ssid. The arguments all have the same meaning as in an ssdict.

If a new SourceStamp is created, its created_at is set to the current time.

getSourceStamp(ssid)
Parameters:
  • ssid – sourcestamp to get

  • no_cache (boolean) – bypass cache and always fetch from database

Returns:

ssdict, or None, via Deferred

Get an ssdict representing the given source stamp, or None if no such source stamp exists.

getSourceStamps()
Returns:

list of ssdict, via Deferred

Get all sourcestamps in the database. You probably don’t want to do this! This method will be extended to allow appropriate filtering.

getSourceStampsForBuild(buildid)
Parameters:

buildid – build ID

Returns:

list of ssdict, via Deferred

Get sourcestamps related to a build.