diff options
| author | Tomas Tomecek <ttomecek@redhat.com> | 2016-07-27 10:26:16 +0200 |
|---|---|---|
| committer | Tomas Tomecek <ttomecek@redhat.com> | 2016-08-10 09:30:19 +0200 |
| commit | 08b284ab399e9bf19296c020e158968ba3fb800b (patch) | |
| tree | 2e9171420391a57df42d44efc2f82c9e949d1058 | |
| parent | 876e7b49daeef7cd403cf1932c8f870521a60eab (diff) | |
| download | docker-py-08b284ab399e9bf19296c020e158968ba3fb800b.tar.gz | |
docker client consistency: don't quote ':/'
E.g.
docker client
`/v1.21/images/localhost:5000/busybox/push?tag=`
docker-py
`/v1.21/images/localhost%3A5000%2Fbusybox/push`
Signed-off-by: Tomas Tomecek <ttomecek@redhat.com>
| -rw-r--r-- | docker/client.py | 4 | ||||
| -rw-r--r-- | tests/unit/api_test.py | 10 |
2 files changed, 11 insertions, 3 deletions
diff --git a/docker/client.py b/docker/client.py index c3e5874..771412e 100644 --- a/docker/client.py +++ b/docker/client.py @@ -14,6 +14,7 @@ import json import struct +from functools import partial import requests import requests.exceptions @@ -156,7 +157,8 @@ class Client( 'instead'.format(arg, type(arg)) ) - args = map(six.moves.urllib.parse.quote_plus, args) + quote_f = partial(six.moves.urllib.parse.quote_plus, safe="/:") + args = map(quote_f, args) if kwargs.get('versioned_api', True): return '{0}/v{1}{2}'.format( diff --git a/tests/unit/api_test.py b/tests/unit/api_test.py index 696c073..712f57e 100644 --- a/tests/unit/api_test.py +++ b/tests/unit/api_test.py @@ -159,9 +159,15 @@ class DockerApiTest(DockerClientTest): '{0}{1}'.format(url_prefix, 'hello/somename/world/someothername') ) - url = self.client._url('/hello/{0}/world', '/some?name') + url = self.client._url('/hello/{0}/world', 'some?name') self.assertEqual( - url, '{0}{1}'.format(url_prefix, 'hello/%2Fsome%3Fname/world') + url, '{0}{1}'.format(url_prefix, 'hello/some%3Fname/world') + ) + + url = self.client._url("/images/{0}/push", "localhost:5000/image") + self.assertEqual( + url, + '{0}{1}'.format(url_prefix, 'images/localhost:5000/image/push') ) def test_url_invalid_resource(self): |
