diff options
author | Zuul <zuul@review.openstack.org> | 2018-05-18 16:23:20 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2018-05-18 16:23:20 +0000 |
commit | 1ef5e5d16976df4b48c0925cdc6c5dc0dfbfb610 (patch) | |
tree | 6e957ff18090d5e569bcf2d5e647e5851e45a703 /glanceclient/common | |
parent | ee029a9b927a41c028427f8afc1821ed914e6d47 (diff) | |
parent | 195add500bac78637f94a008feee986b7800968d (diff) | |
download | python-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.py | 31 |
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' |