Index: third_party/buildbot_7_12/buildbot/steps/trigger.py |
diff --git a/third_party/buildbot_7_12/buildbot/steps/trigger.py b/third_party/buildbot_7_12/buildbot/steps/trigger.py |
deleted file mode 100644 |
index 96ca3819699cec5481320be2bb8f27f2a5ef0e2d..0000000000000000000000000000000000000000 |
--- a/third_party/buildbot_7_12/buildbot/steps/trigger.py |
+++ /dev/null |
@@ -1,131 +0,0 @@ |
-from buildbot.process.buildstep import LoggingBuildStep, SUCCESS, FAILURE, EXCEPTION |
-from buildbot.process.properties import Properties |
-from buildbot.scheduler import Triggerable |
-from twisted.internet import defer |
- |
-class Trigger(LoggingBuildStep): |
- """I trigger a scheduler.Triggerable, to use one or more Builders as if |
- they were a single buildstep (like a subroutine call). |
- """ |
- name = "trigger" |
- |
- flunkOnFailure = True |
- |
- def __init__(self, schedulerNames=[], updateSourceStamp=True, |
- waitForFinish=False, set_properties={}, copy_properties=[], **kwargs): |
- """ |
- Trigger the given schedulers when this step is executed. |
- |
- @param schedulerNames: A list of scheduler names that should be |
- triggered. Schedulers can be specified using |
- WithProperties, if desired. |
- |
- @param updateSourceStamp: If True (the default), I will try to give |
- the schedulers an absolute SourceStamp for |
- their builds, so that a HEAD build will use |
- the same revision even if more changes have |
- occurred since my build's update step was |
- run. If False, I will use the original |
- SourceStamp unmodified. |
- |
- @param waitForFinish: If False (the default), this step will finish |
- as soon as I've started the triggered |
- schedulers. If True, I will wait until all of |
- the triggered schedulers have finished their |
- builds. |
- |
- @param set_properties: A dictionary of properties to set for any |
- builds resulting from this trigger. These |
- properties will override properties set in the |
- Triggered scheduler's constructor. |
- |
- @param copy_properties: a list of property names to copy verbatim |
- into any builds resulting from this trigger. |
- |
- """ |
- assert schedulerNames, "You must specify a scheduler to trigger" |
- self.schedulerNames = schedulerNames |
- self.updateSourceStamp = updateSourceStamp |
- self.waitForFinish = waitForFinish |
- self.set_properties = set_properties |
- self.copy_properties = copy_properties |
- self.running = False |
- LoggingBuildStep.__init__(self, **kwargs) |
- self.addFactoryArguments(schedulerNames=schedulerNames, |
- updateSourceStamp=updateSourceStamp, |
- waitForFinish=waitForFinish, |
- set_properties=set_properties, |
- copy_properties=copy_properties) |
- |
- def interrupt(self, reason): |
- # TODO: this doesn't actually do anything. |
- if self.running: |
- self.step_status.setText(["interrupted"]) |
- |
- def start(self): |
- properties = self.build.getProperties() |
- |
- # make a new properties object from a dict rendered by the old |
- # properties object |
- props_to_set = Properties() |
- props_to_set.update(properties.render(self.set_properties), "Trigger") |
- for p in self.copy_properties: |
- if p not in properties: |
- raise RuntimeError("copy_property '%s' is not set in the triggering build" % p) |
- props_to_set.setProperty(p, properties[p], |
- "%s (in triggering build)" % properties.getPropertySource(p)) |
- |
- self.running = True |
- ss = self.build.getSourceStamp() |
- if self.updateSourceStamp: |
- got = properties.getProperty('got_revision') |
- if got: |
- ss = ss.getAbsoluteSourceStamp(got) |
- |
- # (is there an easier way to find the BuildMaster?) |
- all_schedulers = self.build.builder.botmaster.parent.allSchedulers() |
- all_schedulers = dict([(sch.name, sch) for sch in all_schedulers]) |
- unknown_schedulers = [] |
- triggered_schedulers = [] |
- |
- # TODO: don't fire any schedulers if we discover an unknown one |
- dl = [] |
- for scheduler in self.schedulerNames: |
- scheduler = properties.render(scheduler) |
- if all_schedulers.has_key(scheduler): |
- sch = all_schedulers[scheduler] |
- if isinstance(sch, Triggerable): |
- dl.append(sch.trigger(ss, set_props=props_to_set)) |
- triggered_schedulers.append(scheduler) |
- else: |
- unknown_schedulers.append(scheduler) |
- else: |
- unknown_schedulers.append(scheduler) |
- |
- if unknown_schedulers: |
- self.step_status.setText(['no scheduler:'] + unknown_schedulers) |
- rc = FAILURE |
- else: |
- rc = SUCCESS |
- self.step_status.setText(['triggered'] + triggered_schedulers) |
- |
- if self.waitForFinish: |
- d = defer.DeferredList(dl, consumeErrors=1) |
- else: |
- d = defer.succeed([]) |
- |
- def cb(rclist): |
- rc = SUCCESS # (this rc is not the same variable as that above) |
- for was_cb, buildsetstatus in rclist: |
- # TODO: make this algo more configurable |
- if not was_cb: |
- rc = EXCEPTION |
- break |
- if buildsetstatus.getResults() == FAILURE: |
- rc = FAILURE |
- return self.finished(rc) |
- |
- def eb(why): |
- return self.finished(FAILURE) |
- |
- d.addCallbacks(cb, eb) |