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
>>
>>
>>
>>
>>
>

Reply via email to