diff --git a/openstack/common/cliutils.py b/openstack/common/cliutils.py index 96b4fedc2..de57f02c8 100644 --- a/openstack/common/cliutils.py +++ b/openstack/common/cliutils.py @@ -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 diff --git a/tests/unit/test_cliutils.py b/tests/unit/test_cliutils.py index 14acb95b2..5a1b8a9e8 100644 --- a/tests/unit/test_cliutils.py +++ b/tests/unit/test_cliutils.py @@ -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)