From 0e11e686caec31ab60b3791a2b3e36fcde803108 Mon Sep 17 00:00:00 2001 From: xiexs Date: Fri, 18 Mar 2016 03:49:34 -0400 Subject: [PATCH] Add marker/limit/sort-key/sort-dir features for container-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 container-list. Change-Id: I0d93fb88b0c0e0aae18b3296adbb4d6c8550fae0 Closes-Bug: #1558943 --- .../tests/v1/test_containers_shell.py | 19 +++++++++++++++ magnumclient/v1/containers_shell.py | 23 ++++++++++++++++++- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/magnumclient/tests/v1/test_containers_shell.py b/magnumclient/tests/v1/test_containers_shell.py index 7cdd705..70ffaa7 100644 --- a/magnumclient/tests/v1/test_containers_shell.py +++ b/magnumclient/tests/v1/test_containers_shell.py @@ -25,6 +25,25 @@ class ShellTest(shell_test_base.TestCommandLineArgument): self._test_arg_success('container-list') self.assertTrue(mock_list.called) + @mock.patch('magnumclient.v1.containers.ContainerManager.list') + def test_container_list_success_with_arg(self, mock_list): + self._test_arg_success('container-list ' + '--marker some_uuid ' + '--limit 1 ' + '--sort-dir asc ' + '--sort-key uuid') + self.assertTrue(mock_list.called) + + @mock.patch('magnumclient.v1.containers.ContainerManager.list') + def test_container_list_failure_invalid_arg(self, mock_list): + _error_msg = [ + '.*?^usage: magnum container-list ', + '.*?^error: argument --sort-dir: invalid choice: ', + ".*?^Try 'magnum help container-list' for more information." + ] + self._test_arg_failure('container-list --sort-dir aaa', _error_msg) + self.assertFalse(mock_list.called) + @mock.patch('magnumclient.v1.containers.ContainerManager.list') def test_container_list_success_with_bay(self, mock_list): self._test_arg_success('container-list --bay bay_uuid') diff --git a/magnumclient/v1/containers_shell.py b/magnumclient/v1/containers_shell.py index 7d75016..21dcdeb 100644 --- a/magnumclient/v1/containers_shell.py +++ b/magnumclient/v1/containers_shell.py @@ -60,16 +60,37 @@ def do_container_create(cs, args): _show_container(cs.containers.create(**opts)) +@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 containers 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".') @utils.arg('--bay', metavar='', help="UUID or Name of Bay") def do_container_list(cs, args): """Print a list of available containers.""" opts = {} opts['bay_ident'] = args.bay + opts['marker'] = args.marker + opts['limit'] = args.limit + opts['sort_key'] = args.sort_key + opts['sort_dir'] = args.sort_dir containers = cs.containers.list(**opts) columns = ('uuid', 'name', 'status', 'bay_uuid') utils.print_list(containers, columns, - {'versions': magnum_utils.print_list_field('versions')}) + {'versions': magnum_utils.print_list_field('versions')}, + sortby_index=None) @utils.arg('containers',