Actually, I just checked the trunk version and we already call str() on the header value there - please try your script with the trunk version.
Also out of curiosity which exact Python version are you using? I tested it with 2.7.2 and it looks like httplib.py there already calls str() on the value internally. def putheader(self, header, *values): > """Send a request header line to the server. > For example: h.putheader('Accept', 'text/html') > """ > if self.__state != _CS_REQ_STARTED: > raise CannotSendHeader() > hdr = '%s: %s' % (header, '\r\n\t'.join([str(v) for v in values])) Looking at your stacktrace that is not the case for the version you are using :) Thanks, Tomaz 2011/10/11 Tomaž Muraus <to...@apache.org> > Hi, > > Which version of libcloud are you using (0.5.2, trunk?). > > It would also be very useful if you can run your script with > LIBCLOUD_DEBUG=/dev/stdout environment variable set - > LIBCLOUD_DEBUG=/dev/stdout python my_script.py. > > This should log all the requests and hopefully the offending header which > is making it fail. > > P.S. I think calling str() on the 'value' in common/base.py:L385 would fix > it, but I'm still interested where the 'long' value is coming from (probably > it's a content-length or something like that). > > Thanks, > Tomaz > > On Tue, Oct 11, 2011 at 7:19 PM, Simon Smith <s...@arcode.com> wrote: > >> I'm getting an httplib.py error when trying to upload a file, see python >> session below. Note that 'test2' is a previously-created container. I >> looked at the code and it isn't obvious what is going on. I can go add >> debugging code but first wanted to see if anyone else had run into this. >> (Note: I have not had any problems using libcloud to create new Rackspace >> computing nodes). >> >> Thanks - Simon >> >> >>> from libcloud.storage.types import Provider >> >>> from libcloud.storage.providers import get_driver >> >>> CloudFiles = get_driver(Provider.**CLOUDFILES_US) >> >>> driver = CloudFiles('<redacted>','<**redacted>') >> /var/www/html/ops/resources/**python/libcloud/httplib_ssl.** >> pyc/qqPIGI8-vn-gxQ_**YSAuiF22D8YyOdnxVQ8LYN4UQEbk:**55: UserWarning: SSL >> certificate verification is disabled, this can pose a security risk. For >> more information how to enable the SSL certificate verification, please >> visit the libcloud documentation. >> >>> cont = driver.get_container('test2') >> >>> driver.upload_object('file.**txt',cont,'testfile2') >> Traceback (most recent call last): >> File "<stdin>", line 1, in <module> >> File "python/libcloud/storage/**drivers/cloudfiles.py", line 304, in >> upload_object >> File "python/libcloud/storage/**drivers/cloudfiles.py", line 398, in >> _put_object >> File "python/libcloud/storage/base.**py", line 534, in _upload_object >> File "python/libcloud/storage/**drivers/cloudfiles.py", line 123, in >> request >> File "python/libcloud/common/base.**py", line 385, in request >> File "/home/arcmgr/lib/python2.7/**httplib.py", line 924, in putheader >> str = '%s: %s' % (header, '\r\n\t'.join(values)) >> TypeError: sequence item 0: expected string, long found >> >> >> >> >> >