Use event_time as default event sort key in OSC

Closes-Bug: #1599568
Change-Id: Id1e6e7669b03f5dd4a66a1e786a08eb9ade79307
This commit is contained in:
Jason Dunsmore 2016-09-27 15:16:59 -05:00
parent 9a255f593c
commit 988824784b
2 changed files with 48 additions and 4 deletions

View File

@ -133,11 +133,15 @@ class ListEvent(command.Lister):
)
parser.add_argument(
'--sort',
metavar='<key>[:<direction>]',
metavar='[<key>][:<direction>]',
action='append',
help=_('Sort output by selected keys and directions (asc or desc) '
'(default: asc). Specify multiple times to sort on '
'multiple keys')
'multiple keys. Sort key can be: '
'"event_time" (default), "resource_name", "links", '
'"logical_resource_id", "resource_status", '
'"resource_status_reason", "physical_resource_id", or '
'"id".')
)
parser.add_argument(
'--follow',
@ -202,7 +206,13 @@ class ListEvent(command.Lister):
limit=parsed_args.limit)
if parsed_args.sort:
events = utils.sort_items(events, ','.join(parsed_args.sort))
sorts = []
for sort in parsed_args.sort:
if sort.startswith(":"):
sorts.append(":".join(["event_time", sort.lstrip(":")]))
else:
sorts.append(sort)
events = utils.sort_items(events, ','.join(sorts))
if parsed_args.formatter == 'log':
return [], events

View File

@ -182,13 +182,47 @@ class TestEventList(TestEvent):
])
self.assertEqual(cols, columns)
def test_event_list_sort(self):
@mock.patch('osc_lib.utils.sort_items')
def test_event_list_sort(self, mock_sort_items):
arglist = ['my_stack', '--sort', 'resource_name:desc',
'--format', 'table']
parsed_args = self.check_parser(self.cmd, arglist, [])
mock_event = self.MockEvent()
mock_sort_items.return_value = [mock_event]
columns, data = self.cmd.take_action(parsed_args)
mock_sort_items.assert_called_with(mock.ANY,
"resource_name:desc")
self.event_client.list.assert_called_with(**self.defaults)
self.assertEqual(self.fields, columns)
@mock.patch('osc_lib.utils.sort_items')
def test_event_list_sort_multiple(self, mock_sort_items):
arglist = ['my_stack', '--sort', 'resource_name:desc',
'--sort', 'id:asc', '--format', 'table']
parsed_args = self.check_parser(self.cmd, arglist, [])
mock_event = self.MockEvent()
mock_sort_items.return_value = [mock_event]
columns, data = self.cmd.take_action(parsed_args)
mock_sort_items.assert_called_with(mock.ANY,
"resource_name:desc,id:asc")
self.event_client.list.assert_called_with(**self.defaults)
self.assertEqual(self.fields, columns)
@mock.patch('osc_lib.utils.sort_items')
def test_event_list_sort_default_key(self, mock_sort_items):
arglist = ['my_stack', '--sort', ':desc',
'--format', 'table']
parsed_args = self.check_parser(self.cmd, arglist, [])
mock_event = self.MockEvent()
mock_sort_items.return_value = [mock_event]
columns, data = self.cmd.take_action(parsed_args)
mock_sort_items.assert_called_with(mock.ANY, "event_time:desc")
self.event_client.list.assert_called_with(**self.defaults)
self.assertEqual(self.fields, columns)