diff --git a/ceilometerclient/common/utils.py b/ceilometerclient/common/utils.py index 68414851..5e3da829 100644 --- a/ceilometerclient/common/utils.py +++ b/ceilometerclient/common/utils.py @@ -104,6 +104,9 @@ def format_nested_list_of_dict(l, column_names): pt = prettytable.PrettyTable(caching=False, print_empty=False, header=True, hrules=prettytable.FRAME, field_names=column_names) + # Sort by values of first column + if l is not None: + l.sort(key=lambda k: k.get(column_names[0])) for d in l: pt.add_row(list(map(lambda k: d[k], column_names))) return pt.get_string() diff --git a/ceilometerclient/tests/unit/test_utils.py b/ceilometerclient/tests/unit/test_utils.py index 5ef35e91..5b204371 100644 --- a/ceilometerclient/tests/unit/test_utils.py +++ b/ceilometerclient/tests/unit/test_utils.py @@ -283,14 +283,16 @@ l2"]}] | table.get_string.return_value = "the table" test_data = [ - {'column_1': 'value_11', 'column_2': 'value_21'}, - {'column_1': 'value_12', 'column_2': 'value_22'} - + {'column_1': 'value_c', 'column_2': 'value_23'}, + {'column_1': 'value_b', 'column_2': 'value_22'}, + {'column_1': 'value_a', 'column_2': 'value_21'} ] columns = ['column_1', 'column_2'] pt_mock.return_value = table rval = utils.format_nested_list_of_dict(test_data, columns) self.assertEqual("the table", rval) - self.assertEqual([['value_11', 'value_21'], ['value_12', 'value_22']], + self.assertEqual([['value_a', 'value_21'], + ['value_b', 'value_22'], + ['value_c', 'value_23']], actual_rows)