Skip to content

Commit

Permalink
Merge pull request #1495 from sa2ajj/http-step-fix
Browse files Browse the repository at this point in the history
Make sure url parameter of buildbot.steps.http steps is renderable
  • Loading branch information
Mikhail Sobolev committed Jan 23, 2015
2 parents 4fcefdd + afa2c7a commit 88857a7
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 20 deletions.
43 changes: 23 additions & 20 deletions master/buildbot/steps/http.py
Expand Up @@ -62,28 +62,26 @@ class HTTPStep(BuildStep):
name = 'HTTPStep'
description = 'Requesting'
descriptionDone = 'Requested'
requestsParams = ["method", "url", "params", "data", "headers",
requestsParams = ["params", "data", "headers",
"cookies", "files", "auth",
"timeout", "allow_redirects", "proxies",
"hooks", "stream", "verify", "cert"]
renderables = requestsParams
renderables = requestsParams + ["method", "url"]
session = None

def __init__(self, url, method, description=None, descriptionDone=None, **kwargs):
def __init__(self, url, method, **kwargs):
if txrequests is None or requests is None:
config.error("Need to install txrequest to use this step:\n\n pip install txrequests")
self.method = method
self.url = url
self.requestkwargs = {'method': method, 'url': url}
for p in HTTPStep.requestsParams:
v = kwargs.pop(p, None)
self.__dict__[p] = v

if method not in ('POST', 'GET', 'PUT', 'DELETE', 'HEAD', 'OPTIONS'):
config.error("Wrong method given: '%s' is not known" % method)
if description is not None:
self.description = description
if descriptionDone is not None:
self.descriptionDone = descriptionDone

self.method = method
self.url = url

for param in HTTPStep.requestsParams:
setattr(self, param, kwargs.pop(param, None))

BuildStep.__init__(self, **kwargs)

def start(self):
Expand All @@ -94,10 +92,15 @@ def doRequest(self):
# create a new session if it doesn't exist
self.session = getSession()

for p in self.__dict__ and self.requestsParams:
v = self.__dict__[p]
if v is not None:
self.requestkwargs[p] = v
requestkwargs = {
'method': self.method,
'url': self.url
}

for param in self.requestsParams:
value = getattr(self, param, None)
if value is not None:
requestkwargs[param] = value

log = self.addLog('log')

Expand All @@ -106,9 +109,9 @@ def doRequest(self):
log.addHeader('Performing %s request to %s\n' % (self.method, self.url))
if self.params:
log.addHeader('Parameters:\n')
for k, v in self.requestkwargs.get("params", {}).iteritems():
for k, v in requestkwargs.get("params", {}).iteritems():
log.addHeader('\t%s: %s\n' % (k, v))
data = self.requestkwargs.get("data", None)
data = requestkwargs.get("data", None)
if data:
log.addHeader('Data:\n')
if isinstance(data, dict):
Expand All @@ -118,7 +121,7 @@ def doRequest(self):
log.addHeader('\t%s\n' % data)

try:
r = yield self.session.request(**self.requestkwargs)
r = yield self.session.request(**requestkwargs)
except requests.exceptions.ConnectionError, e:
log.addStderr('An exception occured while performing the request: %s' % e)
self.finished(FAILURE)
Expand Down
1 change: 1 addition & 0 deletions master/docs/relnotes/index.rst
Expand Up @@ -70,6 +70,7 @@ Fixes
~~~~~

* GitHub change hook now correctly responds to ping events.
* ``buildbot.steps.http`` steps now correctly have ``url`` parameter renderable

Deprecations, Removals, and Non-Compatible Changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down

0 comments on commit 88857a7

Please sign in to comment.