summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorSteve Martinelli <stevemar@ca.ibm.com>2015-10-18 16:03:08 -0400
committerDean Troyer <dtroyer@gmail.com>2015-11-12 11:07:57 -0600
commitcfd2bf5882b72d6dbd09a1839b63ed41f3834365 (patch)
tree568c9a50309f534e1baf49a782baf086d4ee2016 /openstackclient
parent6fdc9a891ffad589d7e980dc76481f3fbb0e1b71 (diff)
downloadpython-openstackclient-cfd2bf5882b72d6dbd09a1839b63ed41f3834365.tar.gz
validate non-ascii values for swift properties
skip properties that are non-ascii values, but proceed with properties that work. log these failed values back to the user. Change-Id: Iaca8909f4465a01c8aebfd290b1a322823702359 Closes-Bug: 1503898
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/api/object_store_v1.py8
-rw-r--r--openstackclient/common/utils.py8
2 files changed, 16 insertions, 0 deletions
diff --git a/openstackclient/api/object_store_v1.py b/openstackclient/api/object_store_v1.py
index b1c78d99..ab75a78c 100644
--- a/openstackclient/api/object_store_v1.py
+++ b/openstackclient/api/object_store_v1.py
@@ -14,6 +14,7 @@
"""Object Store v1 API Library"""
import io
+import logging
import os
import six
@@ -25,6 +26,7 @@ except ImportError:
from urlparse import urlparse # noqa
from openstackclient.api import api
+from openstackclient.common import utils
class APIv1(api.BaseAPI):
@@ -551,8 +553,14 @@ class APIv1(api.BaseAPI):
# property we use: "X-Add-Container-Meta-Book: MobyDick", and the same
# logic applies for Object properties
+ log = logging.getLogger(__name__ + '._set_properties')
+
headers = {}
for k, v in properties.iteritems():
+ if not utils.is_ascii(k) or not utils.is_ascii(v):
+ log.error('Cannot set property %s to non-ascii value', k)
+ continue
+
header_name = header_tag % k
headers[header_name] = v
return headers
diff --git a/openstackclient/common/utils.py b/openstackclient/common/utils.py
index 51e2a2f9..8db4f35b 100644
--- a/openstackclient/common/utils.py
+++ b/openstackclient/common/utils.py
@@ -419,3 +419,11 @@ def build_kwargs_dict(arg_name, value):
if value:
kwargs[arg_name] = value
return kwargs
+
+
+def is_ascii(string):
+ try:
+ string.decode('ascii')
+ return True
+ except UnicodeDecodeError:
+ return False