diff options
| author | Jenkins <jenkins@review.openstack.org> | 2015-10-08 20:12:11 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2015-10-08 20:12:11 +0000 |
| commit | 5f4892a15df9828fd8caa23cd1b9602fc875dc97 (patch) | |
| tree | a9bdf892cda391f5e6e7aa1e7f46c40816deeaf6 /openstackclient | |
| parent | bd14d078098eb2055c0dae784de892b0b1346ed5 (diff) | |
| parent | 985b2cdd2c07442f4446e6164117cb8011269c8c (diff) | |
| download | python-openstackclient-5f4892a15df9828fd8caa23cd1b9602fc875dc97.tar.gz | |
Merge "Fix non-ascii issue with object commands"
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/api/object_store_v1.py | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/openstackclient/api/object_store_v1.py b/openstackclient/api/object_store_v1.py index c870332a..ae03ab7d 100644 --- a/openstackclient/api/object_store_v1.py +++ b/openstackclient/api/object_store_v1.py @@ -16,6 +16,7 @@ import io import os import six +from six.moves import urllib try: from urllib.parse import urlparse # noqa @@ -42,8 +43,7 @@ class APIv1(api.BaseAPI): :returns: dict of returned headers """ - - response = self.create(container, method='PUT') + response = self.create(urllib.parse.quote(container), method='PUT') data = { 'account': self._find_account_id(), 'container': container, @@ -63,7 +63,7 @@ class APIv1(api.BaseAPI): """ if container: - self.delete(container) + self.delete(urllib.parse.quote(container)) def container_list( self, @@ -154,7 +154,7 @@ class APIv1(api.BaseAPI): headers = self._set_properties(properties, 'X-Container-Meta-%s') if headers: - self.create(container, headers=headers) + self.create(urllib.parse.quote(container), headers=headers) def container_show( self, @@ -168,7 +168,7 @@ class APIv1(api.BaseAPI): dict of returned headers """ - response = self._request('HEAD', container) + response = self._request('HEAD', urllib.parse.quote(container)) data = { 'account': self._find_account_id(), 'container': container, @@ -201,7 +201,7 @@ class APIv1(api.BaseAPI): headers = self._unset_properties(properties, 'X-Remove-Container-Meta-%s') if headers: - self.create(container, headers=headers) + self.create(urllib.parse.quote(container), headers=headers) def object_create( self, @@ -222,7 +222,8 @@ class APIv1(api.BaseAPI): # TODO(dtroyer): What exception to raise here? return {} - full_url = "%s/%s" % (container, object) + full_url = "%s/%s" % (urllib.parse.quote(container), + urllib.parse.quote(object)) with io.open(object, 'rb') as f: response = self.create( full_url, @@ -255,7 +256,8 @@ class APIv1(api.BaseAPI): if container is None or object is None: return - self.delete("%s/%s" % (container, object)) + self.delete("%s/%s" % (urllib.parse.quote(container), + urllib.parse.quote(object))) def object_list( self, @@ -332,7 +334,7 @@ class APIv1(api.BaseAPI): if delimiter: params['delimiter'] = delimiter - return self.list(container, **params) + return self.list(urllib.parse.quote(container), **params) def object_save( self, @@ -355,7 +357,8 @@ class APIv1(api.BaseAPI): response = self._request( 'GET', - "%s/%s" % (container, object), + "%s/%s" % (urllib.parse.quote(container), + urllib.parse.quote(object)), stream=True, ) if response.status_code == 200: @@ -384,7 +387,9 @@ class APIv1(api.BaseAPI): headers = self._set_properties(properties, 'X-Object-Meta-%s') if headers: - self.create("%s/%s" % (container, object), headers=headers) + self.create("%s/%s" % (urllib.parse.quote(container), + urllib.parse.quote(object)), + headers=headers) def object_unset( self, @@ -404,7 +409,9 @@ class APIv1(api.BaseAPI): headers = self._unset_properties(properties, 'X-Remove-Object-Meta-%s') if headers: - self.create("%s/%s" % (container, object), headers=headers) + self.create("%s/%s" % (urllib.parse.quote(container), + urllib.parse.quote(object)), + headers=headers) def object_show( self, @@ -424,7 +431,9 @@ class APIv1(api.BaseAPI): if container is None or object is None: return {} - response = self._request('HEAD', "%s/%s" % (container, object)) + response = self._request('HEAD', "%s/%s" % + (urllib.parse.quote(container), + urllib.parse.quote(object))) data = { 'account': self._find_account_id(), 'container': container, |
