diff options
Diffstat (limited to 'lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/status_gerrit.py')
-rw-r--r-- | lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/status_gerrit.py | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/status_gerrit.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/status_gerrit.py deleted file mode 100644 index b4925ccf..00000000 --- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/status_gerrit.py +++ /dev/null @@ -1,149 +0,0 @@ -# This file is part of Buildbot. Buildbot is free software: you can -# redistribute it and/or modify it under the terms of the GNU General Public -# License as published by the Free Software Foundation, version 2. -# -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -# details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Copyright Buildbot Team Members - - -"""Push events to gerrit - -.""" - -from buildbot.status.base import StatusReceiverMultiService -from buildbot.status.builder import Results, SUCCESS, RETRY -from twisted.internet import reactor -from twisted.internet.protocol import ProcessProtocol - -def defaultReviewCB(builderName, build, result, status, arg): - if result == RETRY: - return None, 0, 0 - - message = "Buildbot finished compiling your patchset\n" - message += "on configuration: %s\n" % builderName - message += "The result is: %s\n" % Results[result].upper() - - # message, verified, reviewed - return message, (result == SUCCESS or -1), 0 - -class GerritStatusPush(StatusReceiverMultiService): - """Event streamer to a gerrit ssh server.""" - - def __init__(self, server, username, reviewCB=defaultReviewCB, - startCB=None, port=29418, reviewArg=None, - startArg=None, **kwargs): - """ - @param server: Gerrit SSH server's address to use for push event notifications. - @param username: Gerrit SSH server's username. - @param reviewCB: Callback that is called each time a build is finished, and that is used - to define the message and review approvals depending on the build result. - @param startCB: Callback that is called each time a build is started. - Used to define the message sent to Gerrit. - @param port: Gerrit SSH server's port. - @param reviewArg: Optional argument passed to the review callback. - @param startArg: Optional argument passed to the start callback. - """ - StatusReceiverMultiService.__init__(self) - # Parameters. - self.gerrit_server = server - self.gerrit_username = username - self.gerrit_port = port - self.reviewCB = reviewCB - self.reviewArg = reviewArg - self.startCB = startCB - self.startArg = startArg - - class LocalPP(ProcessProtocol): - def __init__(self, status): - self.status = status - - def outReceived(self, data): - print "gerritout:", data - - def errReceived(self, data): - print "gerriterr:", data - - def processEnded(self, status_object): - if status_object.value.exitCode: - print "gerrit status: ERROR:", status_object - else: - print "gerrit status: OK" - - def startService(self): - print """Starting up.""" - StatusReceiverMultiService.startService(self) - self.status = self.parent.getStatus() - self.status.subscribe(self) - - def builderAdded(self, name, builder): - return self # subscribe to this builder - - def buildStarted(self, builderName, build): - if self.startCB is not None: - message = self.startCB(builderName, build, self.startArg) - self.sendCodeReviews(build, message) - - def buildFinished(self, builderName, build, result): - """Do the SSH gerrit verify command to the server.""" - message, verified, reviewed = self.reviewCB(builderName, build, result, self.status, self.reviewArg) - self.sendCodeReviews(build, message, verified, reviewed) - - def sendCodeReviews(self, build, message, verified=0, reviewed=0): - if message is None: - return - - # Gerrit + Repo - downloads = build.getProperty("repo_downloads") - downloaded = build.getProperty("repo_downloaded") - if downloads is not None and downloaded is not None: - downloaded = downloaded.split(" ") - if downloads and 2 * len(downloads) == len(downloaded): - for i in range(0, len(downloads)): - try: - project, change1 = downloads[i].split(" ") - except ValueError: - return # something is wrong, abort - change2 = downloaded[2 * i] - revision = downloaded[2 * i + 1] - if change1 == change2: - self.sendCodeReview(project, revision, message, verified, reviewed) - else: - return # something is wrong, abort - return - - # Gerrit + Git - if build.getProperty("gerrit_branch") is not None: # used only to verify Gerrit source - project = build.getProperty("project") - revision = build.getProperty("got_revision") - - # review doesn't really work with multiple revisions, so let's - # just assume it's None there - if isinstance(revision, dict): - revision = None - - if project is not None and revision is not None: - self.sendCodeReview(project, revision, message, verified, reviewed) - return - - def sendCodeReview(self, project, revision, message=None, verified=0, reviewed=0): - command = ["ssh", self.gerrit_username + "@" + self.gerrit_server, "-p %d" % self.gerrit_port, - "gerrit", "review", "--project %s" % str(project)] - if message: - command.append("--message '%s'" % message.replace("'","\"")) - if verified: - command.extend(["--verified %d" % int(verified)]) - if reviewed: - command.extend(["--code-review %d" % int(reviewed)]) - command.append(str(revision)) - print command - reactor.spawnProcess(self.LocalPP(self), "ssh", command) - -# vim: set ts=4 sts=4 sw=4 et: |