summaryrefslogtreecommitdiff
path: root/buildscripts/buildlogger.py
diff options
context:
space:
mode:
authorDan Crosta <dcrosta@10gen.com>2012-05-16 17:51:19 -0400
committerDan Crosta <dcrosta@10gen.com>2012-05-16 17:51:44 -0400
commitbb5002579d8b4d3462d2e19bc0461711b1be8680 (patch)
treeea8b417c3fa1fb704a6d18d319cae2e90e35616e /buildscripts/buildlogger.py
parent8878424d9cbbbdbe011e7d035ce6f37e6da329c2 (diff)
downloadmongo-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.py19
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('/'):