128 Commits

Author SHA1 Message Date
Jenkins
1d81933921 Merge "fixed several pep8 issues" 2014-05-24 10:17:15 +00:00
Christian Berendt
d08bd458be fixed several pep8 issues
* E111 indentation is not a multiple of four
  * E128 continuation line under-indented for visual indent
  * E265 block comment should start with '# '
  * E713 test for membership should be 'not in'

Tested with pep8 version 1.5.6 (2014-04-14).

Change-Id: I7f85c143d463c501a0df20724362ad5c0f2d4dde
2014-05-21 16:31:53 +00:00
Christian Schwede
258420f410 Fix Python3 bugs
This patch fixes three issues that were found running
functional tests with Python 3:

1. python-requests sets 'application/x-www-form-urlencoded' as
   content-type if the input is not a string object and no
   content-type is given.

2. Encoding of the headers is now only done if required. This
   prevents comparisons between unencoded headers and encoded
   prefixes and avoids unnecessary forloop-iterations.
   One unittest was extended to ensure it works for unencoded
   and encoded headers with or without the prefix.

3. Functional tests recently switched to using byte data for
   testing, thus the comparison needs to be a byte object as well.

Change-Id: I035f8b4b9c9ccdc79820b907770a48f86d0343b4
2014-05-21 14:54:18 +01:00
Jenkins
09eb1843f1 Merge "fixed typos found by RETF rules" 2014-05-16 15:41:30 +00:00
Christian Berendt
2d30656f41 fixed typos found by RETF rules
rules are avaialble at https://en.wikipedia.org/wiki/Wikipedia:AutoWikiBrowser/Typos

Change-Id: I98b6e46cb84962ffdac02e9007b5ad3b30bc2817
2014-05-12 12:02:32 +02:00
Andreas Jaeger
9340122817 Add "." for help strings
The command descriptions did not include a "." at the end but the
argument description does. Add "." everywhere.

Also capitalize and add "." for parameter of capabilities.

Change-Id: I2355e0d0c38170d669c8e568361faf4b68203d16
2014-05-08 16:51:51 +02:00
Chmouel Boudjnah
4467d98f30 Only encode metadata for user customed headers
Don't encode standard headers keys but just the x-*-meta- ones. That
fixes py3 to not have them casted as bytes and not properly passed to
the requests kwargs.

Other trivial py3 fixes along the way.

Change-Id: I91b95f32fb2aec9b20892a5bb95fd1bc65d002f3
2014-05-07 12:11:14 +02:00
Christian Schwede
eb94ac076d Add functional tests for python-swiftclient
Coverage for swiftclient.client is 71% with these tests.

Unit tests have been moved into another subdirectory
to separate them from functional tests.

Change-Id: Ib8c4d78f7169cee893f82906f6388a5b06c45602
2014-05-05 11:53:37 +02:00
Alex Gaynor
9ff3bad4e2 Removed a duplicate word in a dostring
Change-Id: I38e41a7ce9f91b5b1785491c6cd10dbbba9562a2
2014-04-25 11:26:28 -07:00
Chmouel Boudjnah
a99c2ff581 Don't utf8 encode urls.
This is not needed since already done by requests.

(and it was buggy with py3).

Change-Id: I9505c56be2f53eb8071aea3d5fb9d8caa9508e34
2014-04-24 17:05:36 +02:00
Chmouel Boudjnah
504e5a7f53 Remove validate_headers
It wasn't used anymore since moved up to requests (and it fails in py3).

Change-Id: Ic8a80ae09ca6445696a9cf34ffb503c5ff51bc79
2014-04-17 12:04:43 -04:00
Chmouel Boudjnah
8830c81db7 Use quote/unquote from six module for py3
Change-Id: I42cff32fbf3febd6dd6a7171b9214f93b4414f9a
2014-04-17 12:04:43 -04:00
Tristan Cacqueray
fa20e7f685 Makes use of requests.Session
This allows better connection pooling and may improve performances.

Change-Id: I69e986b7387dd3ac281731b8355a3eec34a537f8
2014-04-16 16:00:17 +00:00
Victor Stinner
ea498fb052 Fix test_multithreading on Python 3
* On Python 3, the printer doesn't encode Unicode to utf8 anymore, since
  print() expects a Unicode string.

* Update unit tests for Python 3 since repr() doesn't escape non-ASCII
  characters in Unicode strings anymore:
  http://legacy.python.org/dev/peps/pep-3138/

Change-Id: I89471019d691a46651312d6a49964b719192148a
2014-04-15 11:38:26 -04:00
Victor Stinner
155053ea61 Fix swiftclient.client.quote() for Python 3
On Python 3, urllib.parse.quote() accepts bytes and str (unicode) types and
always return str (unicode).

Add also more tests with non-ASCII characters.

Change-Id: I8e0f19da7240e874392327d0da074ed4abb7d213
2014-04-07 10:30:18 +02:00
Florent Flament
1eaf4c549f Update help message to specify unit of --segment-size option.
Change-Id: Ic3f9a733329c19c4e0bb85676da28a8d1d74232b
Closes-Bug: 1302566
2014-04-04 15:10:40 +00:00
Jenkins
132c643156 Merge "Removed usage of tuple unpacking in parameters." 2014-04-02 19:55:59 +00:00
Jenkins
e0fa104115 Merge "Replaced print statements with print function." 2014-04-01 23:05:22 +00:00
Jenkins
98e36e9438 Merge "don't use mutable defaults in kwargs" 2014-04-01 15:21:22 +00:00
Jenkins
cda26a32c1 Merge "set user-agent header" 2014-04-01 15:21:20 +00:00
Jenkins
296d3ed4ce Merge "Decode HTTP responses, fixes bug #1282861" 2014-04-01 14:08:34 +00:00
Alex Gaynor
1d0c97fdb3 Replaced print statements with print function.
This is needed for Python3 compatibility.

Change-Id: Iadd21e4b3a936b601a69f1db2aba8e1597f13fc3
2014-03-30 12:56:43 -07:00
Alex Gaynor
97662952fd Removed usage of tuple unpacking in parameters.
Replaced it with traditional tuple unpacking. Needed for Python 3 support.

Change-Id: I714f32859f9b1ec7216eae777ea8968b5826af3b
2014-03-30 12:50:12 -07:00
Jenkins
21db1bf836 Merge "Python 3: Get compatible types from six" 2014-03-30 19:48:34 +00:00
John Dickinson
1f0dd002db don't use mutable defaults in kwargs
Change-Id: I3ae71259ccc49a5d8a852388784c3dfd577df50a
2014-03-30 10:29:36 -07:00
John Dickinson
4f3d6e7f3a set user-agent header
Change-Id: Ia67807667b4b5177d83cce9fcf16d98dc5024fbc
2014-03-30 10:29:07 -07:00
Victor Stinner
12f86fdcc5 Python 3: Get compatible types from six
* Replace unicode with six.text_type
* Replace basestring with six.string_types
* The long type doesn't exist in Python 3 anymore: replace 1L with long(1) and
  only test this type with Python 2
* Fix quote(): quote the URL if the string is a byte string. Use "bytes" type
  instead of "str" to be Python 3 compatible.

Change-Id: I1df5aa85e4e7d07191fb5c654d52fc4bd8b9f440
2014-03-28 15:48:50 +00:00
Victor Stinner
e3b7ecd2bb Python 3: Fix module names in import
Use six.moves to fix imports on Python 3.

Change-Id: I35b9405690e9f0607b24d79aa7c00830df954c41
2014-03-28 15:04:14 +00:00
Victor Stinner
701faf0d16 Replace dict.iteritems() with dict.items()
dict.iteritems() has been removed in Python 3. In Python 2, dict.items()
creates a temporary list, but Samuel Merritt wrote:

"The size of the data is small enough that we don't need to worry about the
memory consumption; it's all just HTTP headers."

Change-Id: Iac427b8bbd032e4a1efb2bdc84a3968217eb6ddf
2014-03-27 12:21:25 +01:00
Christian Schwede
100419c0b3 Make bin/swift testable part 1
To make bin/swift importable for testing it needs to be renamed/moved.
The final idea is to move it to swiftclient/shell.py and add only a stub
in bin/swift to import swiftclient/shell.py.

However, doing this in a single step makes reviewing very hard, because
now there are > 1400 lines deleted from bin/swift and added to
swiftclient/shell.py - Gerrit doesn't detect the moved file.

For example: https://review.openstack.org/#/c/73710/2/

This patch first moves the code to swiftclient/shell.py and uses
setup.py/cfg to create the stub file in bin/swift. A follow up
(https://review.openstack.org/#/c/76489/) will then add the stub itself
in bin/swift (and remove the entry in setup.py).

The change to tox.ini is related to bug 1290562 and can be removed in
the future.

Change-Id: Id86392ccaf09e1d80a5d808fb49827d6d18c2588
2014-03-25 11:32:51 +00:00
groqez
bffdadee57 Decode HTTP responses, fixes bug #1282861
By default, the HTTPConnection class expose the raw.read urllib3
function which doesn't do any decoding on the http response.
We can fix this by passing decode_content=True to raw.read().

Change-Id: I7d42d31ae516705d1bde2769e642931308116c7a
2014-03-18 19:47:02 +01:00
Jenkins
41f5763b2b Merge "TCP port is appended two time in ClientException" 2014-03-12 02:13:18 +00:00
Fabien Boucher
2e1a5b7e28 TCP port is appended two time in ClientException
urlparse netloc contains the TCP port if presents.
There is no need to provide conn.port when building
CLientException.

Change-Id: Id3e4fa8c4f4ab2ad693b0e8702ab69ed7c291830
2014-03-06 22:04:28 +01:00
Clay Gerrard
3d35a3e989 Add LengthWrapper in put_object to honor content_length param
Closes-Bug:#1284360

Change-Id: Iec63a3fde77bb8195bfe46c764403b367999ff43
2014-02-25 01:12:51 -08:00
Jenkins
f4e057923c Merge "Remove useless statement" 2014-02-19 23:17:10 +00:00
Fabien Boucher
b5b440d9b6 Remove useless statement
Change-Id: Ide74b417ede6a4976c33fc835d366ed472033fd0
2014-02-19 14:09:50 +01:00
Tristan Cacqueray
380e830874 Remove multipart/form-data file upload
The requests 'files' parameter adds this 'Content-Type: multipart/form-data'
HTTP header and the whole multipart body data get stored with the object.
This also create a memory hog issue because files are loaded in memory before
being actually sent. This patch removes this behavior and restores what was
done before, ie: direct uploading.

This patches also fixes an issue in requests, when used with glance
CooperativeReader it mis-calculates content-length leading to chunked encoding
for raw upload.

Change-Id: Ie5b0a1078bedd33f09c6157f48b5f88116c589fa
Closes-Bug: #1280072
Closes-Bug: #1280275
2014-02-14 16:51:20 +01:00
John Dickinson
79f189a593 Fix --insecure option on auth
Change-Id: Ibe76d98d6075b84cbdb370b48f3498ab848142ad
2014-02-13 23:37:08 -08:00
Jenkins
19d7e1812a Merge "Port to python-requests" 2014-02-14 00:41:39 +00:00
yangxurong
4e15bc7120 Remove extraneous vim configuration comments
Remove line containing

comment - # vim: tabstop=4 shiftwidth=4 softtabstop=4

Change-Id: I31e4ee4112285f0daa5f2dd50db0344f4876820d
Closes-Bug:#1229324
2014-02-13 17:44:29 +08:00
Tristan Cacqueray
b182112719 Port to python-requests
Currently, httplib implementation does not support SSL certificate
verification. This patch fixes this. Note that ssl compression parameter
and 100-continue thing is still missing from requests, though those are
lower priority.

Requests now takes care of:
* proxy configuration (get_environ_proxies),
* chunked encoding (with data generator),
* bulk uploading (with files dictionary),
* SSL certificate verification (with 'insecure' and 'cacert' parameter).

This patch have been tested with requests 1.1.0 (CentOS 6) and requests
2.2.1 (current version).

Change-Id: Ib5de962f4102d57c71ad85fd81a615362ef175dc
Closes-Bug: #1199783
DocImpact
SecurityImpact
2014-02-12 13:21:26 +01:00
Sergio Cazzolato
d387c61daa changed things because reasons
Dictionaries added in texts to improve readability in case there
are 2 params

Change-Id: I064cceeaa56b232504c6f0b6c215c9c5dbb7fcef
2014-02-06 17:31:32 -08:00
Jenkins
feb514a207 Merge "Add capabilities option" 2014-01-31 08:55:27 +00:00
John Dickinson
95aa3e96f2 match hacking rules in swift
Change-Id: Iee02978f38ca020754f52ceaed6aa3684fa87bc9
2014-01-24 14:53:17 -08:00
Jenkins
b4907e0c81 Merge "retry on ratelimit" 2014-01-18 17:07:16 +00:00
Fabien Boucher
533c9c5ba1 Add capabilities option
This patch adds a capabilities option on swiftclient.
This option uses the new /info endpoint to request the
remote capabilities and nicely display it.

Change-Id: Ie34b454511d5527e402e66e1fdb72120f427f2fd
2014-01-17 10:26:34 +01:00
Wu Wenxiang
a1cf366a0b Replace xrange in for loop with range
xrange is not supported in python 3, so replace it with range since no
large size lists involved.

Closes-Bug: #1237717

Change-Id: I4e5e0782153d32c8beee03f7d871722ed4352859
2014-01-14 21:49:44 +08:00
John Dickinson
5187fd313f retry on ratelimit
Added a retry_on_ratelimit parameter to the Connection
class so that ratelimited requests can be retried.

DocImpact

Change-Id: I2817a7ea0ed2d69a7659e80111fbd2c91a75d530
2013-12-23 13:53:18 -08:00
Jenkins
0ae2b58f2d Merge "Enable usage of proxies defined in environment (http(s)_proxy)." 2013-12-14 09:37:38 +00:00
Jenkins
38ae02928d Merge "Fixes python-swiftclient debugging message" 2013-12-12 08:48:58 +00:00