On 10/29/2010 01:13 PM, Jeff Ortel wrote:
On 10/29/2010 01:31 PM, Mike McCune wrote:For those that remember the baffling errors you sometimes have to debug where Apache barfs with: [Fri Oct 29 11:09:46 2010] [error] [client 127.0.0.1] Invalid method in request P in your ssl_error_log ... and your pulp client bombs with: Traceback (most recent call last): File "/usr/bin/pulp-admin", line 7, in<module> execfile(__file__) ... File "/usr/lib64/python2.6/json/decoder.py", line 338, in raw_decode raise ValueError("No JSON object could be decoded") ValueError: No JSON object could be decoded leaving you with no real way to figure out what is going on other than to bang your head against the wall and hope that you remembered that according to RFC 1738: http://www.faqs.org/rfcs/rfc1738.html "URLs are written only with the graphic printable characters of the US-ASCII coded character set." and " Thus, only alphanumerics, the special characters "$-_.+!*'(),", and reserved characters used for their reserved purposes may be used unencoded within a URL." To fix this we have done this in our code: connection.py: method = "/consumers/%s/" % str(id) connection.py: method = "/consumers/%s/packages/" % str(id) connection.py: method = "/consumers/%s/certificate/" % str(id) connection.py: method = "/consumers/%s/keyvalues/" % str(id) connection.py: method = "/consumergroups/%s/" % str(id) connection.py: method = "/users/%s/" % str(login) note the str() wrapping the param. Instead of forcing our developers to remember todo this why don't we just do the following in connection.py: diff --git a/src/pulp/client/connection.py b/src/pulp/client/connection.py index 0067dbb..6d4b75c 100644 --- a/src/pulp/client/connection.py +++ b/src/pulp/client/connection.py @@ -106,7 +106,9 @@ class Restlib(object): self.key_file = key_file def _request(self, request_type, method, info=None): - handler = method + # Convert the method (path) into a string so we dont + # have any unicode characters in the URL + handler = str(method) if not handler.startswith(self.apihandler): #handler = self.apihandler + handler handler = '/'.join((self.apihandler, handler)) Any objections?Nope. Excellent idea.
OK, change is pushed. thanks for the double-check _______________________________________________ Pulp-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/pulp-list
