Thanks! I'm using what is probably an early 2.7 version, and we might be using an old httplib as well. I will check out all three upgrade avenues. I really appreciate your time and help!!!

 On 10/11/11 1:59 PM, Tomaž Muraus wrote:
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