Allow specifying a table header for the value column in print_dict
If you can provide a customer header label for the property (first) column in the print_dict output you should also be able to provide a customer header label for the value (second) column. Partial-Bug: #1503841 Change-Id: Iaa96b80249389fdf12ffbaf84073debebca4b5a4
This commit is contained in:
parent
e5fdc54200
commit
075379920e
@ -186,14 +186,15 @@ def print_list(objs, fields, formatters=None, sortby_index=0,
|
||||
print(encodeutils.safe_encode(pt.get_string(**kwargs)))
|
||||
|
||||
|
||||
def print_dict(dct, dict_property="Property", wrap=0):
|
||||
def print_dict(dct, dict_property="Property", wrap=0, dict_value='Value'):
|
||||
"""Print a `dict` as a table of two columns.
|
||||
|
||||
:param dct: `dict` to print
|
||||
:param dict_property: name of the first column
|
||||
:param wrap: wrapping for the second column
|
||||
:param dict_value: header label for the value (second) column
|
||||
"""
|
||||
pt = prettytable.PrettyTable([dict_property, 'Value'])
|
||||
pt = prettytable.PrettyTable([dict_property, dict_value])
|
||||
pt.align = 'l'
|
||||
for k, v in six.iteritems(dct):
|
||||
# convert dict to str to check length
|
||||
|
@ -588,6 +588,24 @@ class PrintResultStringTestCase(test_base.BaseTestCase):
|
||||
| K | k |
|
||||
| Key | Value |
|
||||
+----------+-------+
|
||||
'''
|
||||
self.assertEqual(expected, out)
|
||||
|
||||
def test_print_dict_string_custom_headers(self):
|
||||
orig = sys.stdout
|
||||
sys.stdout = six.StringIO()
|
||||
cliutils.print_dict({"K": "k", "Key": "Value"}, dict_property='Foo',
|
||||
dict_value='Bar')
|
||||
out = sys.stdout.getvalue()
|
||||
sys.stdout.close()
|
||||
sys.stdout = orig
|
||||
expected = '''\
|
||||
+-----+-------+
|
||||
| Foo | Bar |
|
||||
+-----+-------+
|
||||
| K | k |
|
||||
| Key | Value |
|
||||
+-----+-------+
|
||||
'''
|
||||
self.assertEqual(expected, out)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user