diff options
Diffstat (limited to 'buildscripts/buildlogger.py')
-rw-r--r-- | buildscripts/buildlogger.py | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/buildscripts/buildlogger.py b/buildscripts/buildlogger.py index 844e0d15f47..de215333690 100644 --- a/buildscripts/buildlogger.py +++ b/buildscripts/buildlogger.py @@ -79,7 +79,24 @@ digest_handler.add_password( uri=URL_ROOT, user=username, passwd=password) -url_opener = urllib2.build_opener(digest_handler) + +# This version of HTTPErrorProcessor is copied from +# Python 2.7, and allows REST response codes (e.g. +# "201 Created") which are treated as errors by +# older versions. +class HTTPErrorProcessor(urllib2.HTTPErrorProcessor): + def http_response(self, request, response): + code, msg, hdrs = response.code, response.msg, response.info() + + # According to RFC 2616, "2xx" code indicates that the client's + # request was successfully received, understood, and accepted. + if not (200 <= code < 300): + response = self.parent.error( + 'http', request, response, code, msg, hdrs) + + return response + +url_opener = urllib2.build_opener(digest_handler, HTTPErrorProcessor()) def url(endpoint): if not endpoint.endswith('/'): |