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:
Steven Hardy
2015-04-29 09:11:44 -04:00
parent 99761e7d2d
commit 5f085c0645
2 changed files with 30 additions and 1 deletions

View File

@@ -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):

View File

@@ -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)