diff options
| author | Jenkins <jenkins@review.openstack.org> | 2015-05-05 13:41:04 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2015-05-05 13:41:04 +0000 |
| commit | cccd52acc85b4a2a6a61f6b3d58e755b3ddd64de (patch) | |
| tree | 36706da605c0facde5c9045d07cf57591734271d | |
| parent | dba5cc40483878e8e745bf0cf137e5dbfc23cf9c (diff) | |
| parent | fb19cf53daf541285ba7007b0bdde68274619066 (diff) | |
| download | python-heatclient-cccd52acc85b4a2a6a61f6b3d58e755b3ddd64de.tar.gz | |
Merge "Implement --marker for event-list --nested-depth"
| -rw-r--r-- | heatclient/tests/test_shell.py | 49 | ||||
| -rw-r--r-- | heatclient/v1/shell.py | 10 |
2 files changed, 46 insertions, 13 deletions
diff --git a/heatclient/tests/test_shell.py b/heatclient/tests/test_shell.py index c03dc3f..783ebf0 100644 --- a/heatclient/tests/test_shell.py +++ b/heatclient/tests/test_shell.py @@ -2426,19 +2426,11 @@ class ShellTestEventsNested(ShellBase): for r in required: self.assertRegexpMatches(list_text, r) - def test_shell_nested_depth(self): - self.register_keystone_auth_fixture() - stack_id = 'teststack/1' - nested_id = 'nested/2' - timestamps = ("2014-01-06T16:14:00Z", # parent eventid1 - "2014-01-06T16:15:00Z", # nested n_eventid1 - "2014-01-06T16:16:00Z", # nested n_eventid2 - "2014-01-06T16:17:00Z") # parent eventid2 - + def _stub_event_list_response(self, stack_id, nested_id, timestamps): # Stub events for parent stack - ev_resp_dict = {"events": [{"id": "eventid1", + ev_resp_dict = {"events": [{"id": "p_eventid1", "event_time": timestamps[0]}, - {"id": "eventid2", + {"id": "p_eventid2", "event_time": timestamps[3]}]} ev_resp = fakes.FakeHTTPResponse( 200, @@ -2480,10 +2472,19 @@ class ShellTestEventsNested(ShellBase): 'GET', '/stacks/%s/events?sort_dir=asc' % ( nested_id)).AndReturn((nev_resp, nev_resp_dict)) + def test_shell_nested_depth(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' % stack_id) - required = ['id', 'eventid1', 'eventid2', 'n_eventid1', 'n_eventid2', - 'stack_name', 'teststack', 'nested'] + required = ['id', 'p_eventid1', 'p_eventid2', 'n_eventid1', + 'n_eventid2', 'stack_name', 'teststack', 'nested'] for r in required: self.assertRegexpMatches(list_text, r) @@ -2491,6 +2492,28 @@ class ShellTestEventsNested(ShellBase): self.assertRegexpMatches(list_text, "%s.*\n.*%s.*\n.*%s.*\n.*%s" % timestamps) + def test_shell_nested_depth_marker(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 --marker n_eventid1' % stack_id) + required = ['id', 'p_eventid2', 'n_eventid1', 'n_eventid2', + 'stack_name', 'teststack', 'nested'] + for r in required: + self.assertRegexpMatches(list_text, r) + + self.assertNotRegexpMatches(list_text, 'p_eventid1') + + self.assertRegexpMatches(list_text, + "%s.*\n.*%s.*\n.*%s.*" % timestamps[1:]) + class ShellTestResources(ShellBase): diff --git a/heatclient/v1/shell.py b/heatclient/v1/shell.py index f24a83a..ba9e484 100644 --- a/heatclient/v1/shell.py +++ b/heatclient/v1/shell.py @@ -952,6 +952,9 @@ def do_event_list(hc, args): except ValueError: 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 + del (event_args['marker']) else: nested_depth = 0 @@ -974,6 +977,13 @@ def do_event_list(hc, args): # will be needed to make "--marker" work for nested_depth lists events.sort(key=lambda x: x.event_time) + # Slice the list if marker is specified + if args.marker: + marker_index = [e.id for e in events].index(args.marker) + else: + marker_index = 0 + events = events[marker_index:] + utils.print_list(events, display_fields, sortby_index=None) |
