diff options
author | Dan Crosta <dcrosta@10gen.com> | 2012-05-16 17:51:19 -0400 |
---|---|---|
committer | Dan Crosta <dcrosta@10gen.com> | 2012-05-16 17:51:44 -0400 |
commit | bb5002579d8b4d3462d2e19bc0461711b1be8680 (patch) | |
tree | ea8b417c3fa1fb704a6d18d319cae2e90e35616e /buildscripts/buildlogger.py | |
parent | 8878424d9cbbbdbe011e7d035ce6f37e6da329c2 (diff) | |
download | mongo-bb5002579d8b4d3462d2e19bc0461711b1be8680.tar.gz |
buildlogger: Don't fail on older Pythons for 201 HTTP status
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('/'): |