summaryrefslogtreecommitdiff
path: root/glanceclient/common
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-05-18 16:23:20 +0000
committerGerrit Code Review <review@openstack.org>2018-05-18 16:23:20 +0000
commit1ef5e5d16976df4b48c0925cdc6c5dc0dfbfb610 (patch)
tree6e957ff18090d5e569bcf2d5e647e5851e45a703 /glanceclient/common
parentee029a9b927a41c028427f8afc1821ed914e6d47 (diff)
parent195add500bac78637f94a008feee986b7800968d (diff)
downloadpython-glanceclient-1ef5e5d16976df4b48c0925cdc6c5dc0dfbfb610.tar.gz
Merge "Removes unicode 'u' response from "glance image-tag-update""
Diffstat (limited to 'glanceclient/common')
-rw-r--r--glanceclient/common/utils.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/glanceclient/common/utils.py b/glanceclient/common/utils.py
index b61913e..bed25b9 100644
--- a/glanceclient/common/utils.py
+++ b/glanceclient/common/utils.py
@@ -177,6 +177,12 @@ def pretty_choice_list(l):
def print_list(objs, fields, formatters=None, field_settings=None):
+ '''Prints a list of objects.
+
+ @param objs: Objects to print
+ @param fields: Fields on each object to be printed
+ @param formatters: Custom field formatters
+ '''
formatters = formatters or {}
field_settings = field_settings or {}
pt = prettytable.PrettyTable([f for f in fields], caching=False)
@@ -196,11 +202,36 @@ def print_list(objs, fields, formatters=None, field_settings=None):
field_name = field.lower().replace(' ', '_')
data = getattr(o, field_name, None) or ''
row.append(data)
+ count = 0
+ # Converts unicode values in list to string
+ for part in row:
+ count = count + 1
+ if isinstance(part, list):
+ part = unicode_key_value_to_string(part)
+ row[count - 1] = part
pt.add_row(row)
print(encodeutils.safe_decode(pt.get_string()))
+def _encode(src):
+ """remove extra 'u' in PY2."""
+ if six.PY2 and isinstance(src, unicode):
+ return src.encode('utf-8')
+ return src
+
+
+def unicode_key_value_to_string(src):
+ """Recursively converts dictionary keys to strings."""
+ if isinstance(src, dict):
+ return dict((_encode(k),
+ _encode(unicode_key_value_to_string(v)))
+ for k, v in src.items())
+ if isinstance(src, list):
+ return [unicode_key_value_to_string(l) for l in src]
+ return _encode(src)
+
+
def print_dict(d, max_column_width=80):
pt = prettytable.PrettyTable(['Property', 'Value'], caching=False)
pt.align = 'l'