diff options
Diffstat (limited to 'glanceclient/common/utils.py')
-rw-r--r-- | glanceclient/common/utils.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/glanceclient/common/utils.py b/glanceclient/common/utils.py index f13efad..9071065 100644 --- a/glanceclient/common/utils.py +++ b/glanceclient/common/utils.py @@ -17,6 +17,7 @@ from __future__ import print_function import errno import hashlib +import json import os import re import sys @@ -106,14 +107,20 @@ def pretty_choice_list(l): return ', '.join("'%s'" % i for i in l) -def print_list(objs, fields, formatters=None): +def print_list(objs, fields, formatters=None, field_settings=None): formatters = formatters or {} + field_settings = field_settings or {} pt = prettytable.PrettyTable([f for f in fields], caching=False) pt.align = 'l' for o in objs: row = [] for field in fields: + if field in field_settings: + for setting, value in six.iteritems(field_settings[field]): + setting_dict = getattr(pt, setting) + setting_dict[field] = value + if field in formatters: row.append(formatters[field](o)) else: @@ -129,7 +136,10 @@ def print_dict(d, max_column_width=80): pt = prettytable.PrettyTable(['Property', 'Value'], caching=False) pt.align = 'l' pt.max_width = max_column_width - [pt.add_row(list(r)) for r in six.iteritems(d)] + for k, v in six.iteritems(d): + if isinstance(v, (dict, list)): + v = json.dumps(v) + pt.add_row([k, v]) print(strutils.safe_encode(pt.get_string(sortby='Property'))) |