From fb539ee08ecd85558312d7fa64218d7c3266dd0a Mon Sep 17 00:00:00 2001 From: xiexs Date: Fri, 18 Mar 2016 03:19:37 -0400 Subject: [PATCH] Add marker/limit/sort-key/sort-dir features for bay-list The parameters 'marker', 'limit', 'sort_key' and 'sort_dir' has already been supported by magnum, so this patch tries to add support of them for bay-list. Change-Id: I5413bd91ff31a8d110002988b8e872f929161bd1 Closes-Bug: #1558937 --- magnumclient/tests/v1/test_bays_shell.py | 19 +++++++++++++++++++ magnumclient/v1/bays_shell.py | 23 +++++++++++++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/magnumclient/tests/v1/test_bays_shell.py b/magnumclient/tests/v1/test_bays_shell.py index 43bb11dd..9db1e556 100644 --- a/magnumclient/tests/v1/test_bays_shell.py +++ b/magnumclient/tests/v1/test_bays_shell.py @@ -25,6 +25,25 @@ class ShellTest(shell_test_base.TestCommandLineArgument): self._test_arg_success('bay-list') self.assertTrue(mock_list.called) + @mock.patch('magnumclient.v1.bays.BayManager.list') + def test_bay_list_success_with_arg(self, mock_list): + self._test_arg_success('bay-list ' + '--marker some_uuid ' + '--limit 1 ' + '--sort-dir asc ' + '--sort-key uuid') + self.assertTrue(mock_list.called) + + @mock.patch('magnumclient.v1.bays.BayManager.list') + def test_bay_list_failure_invalid_arg(self, mock_list): + _error_msg = [ + '.*?^usage: magnum bay-list ', + '.*?^error: argument --sort-dir: invalid choice: ', + ".*?^Try 'magnum help bay-list' for more information." + ] + self._test_arg_failure('bay-list --sort-dir aaa', _error_msg) + self.assertFalse(mock_list.called) + @mock.patch('magnumclient.v1.bays.BayManager.list') def test_bay_list_failure(self, mock_list): self._test_arg_failure('bay-list --wrong', diff --git a/magnumclient/v1/bays_shell.py b/magnumclient/v1/bays_shell.py index 703c64dd..d3181906 100644 --- a/magnumclient/v1/bays_shell.py +++ b/magnumclient/v1/bays_shell.py @@ -21,12 +21,31 @@ def _show_bay(bay): utils.print_dict(bay._info) +@utils.arg('--marker', + metavar='', + default=None, + help='The last bay UUID of the previous page; ' + 'displays list of bays after "marker".') +@utils.arg('--limit', + metavar='', + type=int, + help='Maximum number of bays to return.') +@utils.arg('--sort-key', + metavar='', + help='Column to sort results by.') +@utils.arg('--sort-dir', + metavar='', + choices=['desc', 'asc'], + help='Direction to sort. "asc" or "desc".') def do_bay_list(cs, args): """Print a list of available bays.""" - bays = cs.bays.list() + bays = cs.bays.list(marker=args.marker, limit=args.limit, + sort_key=args.sort_key, + sort_dir=args.sort_dir) columns = ('uuid', 'name', 'node_count', 'master_count', 'status') utils.print_list(bays, columns, - {'versions': magnum_utils.print_list_field('versions')}) + {'versions': magnum_utils.print_list_field('versions')}, + sortby_index=None) @utils.arg('--name',