aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/web/change_hook.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/web/change_hook.py')
-rw-r--r--lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/web/change_hook.py136
1 files changed, 0 insertions, 136 deletions
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/web/change_hook.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/web/change_hook.py
deleted file mode 100644
index cc53e34b..00000000
--- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/web/change_hook.py
+++ /dev/null
@@ -1,136 +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
-
-# code inspired/copied from contrib/github_buildbot
-# and inspired from code from the Chromium project
-# otherwise, Andrew Melo <andrew.melo@gmail.com> wrote the rest
-# but "the rest" is pretty minimal
-
-import re
-from twisted.web import resource, server
-from twisted.python.reflect import namedModule
-from twisted.python import log
-from twisted.internet import defer
-
-class ChangeHookResource(resource.Resource):
- # this is a cheap sort of template thingy
- contentType = "text/html; charset=utf-8"
- children = {}
- def __init__(self, dialects={}):
- """
- The keys of 'dialects' select a modules to load under
- master/buildbot/status/web/hooks/
- The value is passed to the module's getChanges function, providing
- configuration options to the dialect.
- """
- self.dialects = dialects
- self.request_dialect = None
-
- def getChild(self, name, request):
- return self
-
- def render_GET(self, request):
- """
- Reponds to events and starts the build process
- different implementations can decide on what methods they will accept
- """
- return self.render_POST(request)
-
- def render_POST(self, request):
- """
- Reponds to events and starts the build process
- different implementations can decide on what methods they will accept
-
- :arguments:
- request
- the http request object
- """
-
- try:
- changes, src = self.getChanges( request )
- except ValueError, err:
- request.setResponseCode(400, err.args[0])
- return err.args[0]
- except Exception, e:
- log.err(e, "processing changes from web hook")
- msg = "Error processing changes."
- request.setResponseCode(500, msg)
- return msg
-
- log.msg("Payload: " + str(request.args))
-
- if not changes:
- log.msg("No changes found")
- return "no changes found"
- d = self.submitChanges( changes, request, src )
- def ok(_):
- request.setResponseCode(202)
- request.finish()
- def err(why):
- log.err(why, "adding changes from web hook")
- request.setResponseCode(500)
- request.finish()
- d.addCallbacks(ok, err)
- return server.NOT_DONE_YET
-
-
- def getChanges(self, request):
- """
- Take the logic from the change hook, and then delegate it
- to the proper handler
- http://localhost/change_hook/DIALECT will load up
- buildmaster/status/web/hooks/DIALECT.py
-
- and call getChanges()
-
- the return value is a list of changes
-
- if DIALECT is unspecified, a sample implementation is provided
- """
- uriRE = re.search(r'^/change_hook/?([a-zA-Z0-9_]*)', request.uri)
-
- if not uriRE:
- log.msg("URI doesn't match change_hook regex: %s" % request.uri)
- raise ValueError("URI doesn't match change_hook regex: %s" % request.uri)
-
- changes = []
- src = None
-
- # Was there a dialect provided?
- if uriRE.group(1):
- dialect = uriRE.group(1)
- else:
- dialect = 'base'
-
- if dialect in self.dialects.keys():
- log.msg("Attempting to load module buildbot.status.web.hooks." + dialect)
- tempModule = namedModule('buildbot.status.web.hooks.' + dialect)
- changes, src = tempModule.getChanges(request,self.dialects[dialect])
- log.msg("Got the following changes %s" % changes)
- self.request_dialect = dialect
- else:
- m = "The dialect specified, '%s', wasn't whitelisted in change_hook" % dialect
- log.msg(m)
- log.msg("Note: if dialect is 'base' then it's possible your URL is malformed and we didn't regex it properly")
- raise ValueError(m)
-
- return (changes, src)
-
- @defer.inlineCallbacks
- def submitChanges(self, changes, request, src):
- master = request.site.buildbot_service.master
- for chdict in changes:
- change = yield master.addChange(src=src, **chdict)
- log.msg("injected change %s" % change)