Implement --limit option for event-list with --nested-depth
Until the API supports recursive event listing, including the limit parameter, we'll have to do client-side filtering to support this option Change-Id: Idf71503209b1f5a137a4a831713ef262bb947e4f
This commit is contained in:
@@ -2514,6 +2514,29 @@ class ShellTestEventsNested(ShellBase):
|
||||
self.assertRegexpMatches(list_text,
|
||||
"%s.*\n.*%s.*\n.*%s.*" % timestamps[1:])
|
||||
|
||||
def test_shell_nested_depth_limit(self):
|
||||
self.register_keystone_auth_fixture()
|
||||
stack_id = 'teststack/1'
|
||||
nested_id = 'nested/2'
|
||||
timestamps = ("2014-01-06T16:14:00Z", # parent p_eventid1
|
||||
"2014-01-06T16:15:00Z", # nested n_eventid1
|
||||
"2014-01-06T16:16:00Z", # nested n_eventid2
|
||||
"2014-01-06T16:17:00Z") # parent p_eventid2
|
||||
self._stub_event_list_response(stack_id, nested_id, timestamps)
|
||||
self.m.ReplayAll()
|
||||
list_text = self.shell(
|
||||
'event-list %s --nested-depth 1 --limit 2' % stack_id)
|
||||
required = ['id', 'p_eventid1', 'n_eventid1',
|
||||
'stack_name', 'teststack', 'nested']
|
||||
for r in required:
|
||||
self.assertRegexpMatches(list_text, r)
|
||||
|
||||
self.assertNotRegexpMatches(list_text, 'p_eventid2')
|
||||
self.assertNotRegexpMatches(list_text, 'n_eventid2')
|
||||
|
||||
self.assertRegexpMatches(list_text,
|
||||
"%s.*\n.*%s.*\n" % timestamps[:2])
|
||||
|
||||
|
||||
class ShellTestResources(ShellBase):
|
||||
|
||||
|
||||
@@ -963,8 +963,9 @@ def do_event_list(hc, args):
|
||||
msg = _("--nested-depth invalid value %s") % args.nested_depth
|
||||
raise exc.CommandError(msg)
|
||||
# Until the API supports recursive event listing we'll have to do the
|
||||
# marker filtering client-side
|
||||
# marker/limit filtering client-side
|
||||
del (event_args['marker'])
|
||||
del (event_args['limit'])
|
||||
else:
|
||||
nested_depth = 0
|
||||
|
||||
@@ -992,6 +993,11 @@ def do_event_list(hc, args):
|
||||
marker_index = [e.id for e in events].index(args.marker)
|
||||
events = events[marker_index:]
|
||||
|
||||
# Slice the list if limit is specified
|
||||
if args.limit:
|
||||
limit_index = min(int(args.limit), len(events))
|
||||
events = events[:limit_index]
|
||||
|
||||
utils.print_list(events, display_fields, sortby_index=None)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user