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
This commit is contained in:
xiexs 2016-03-18 03:49:34 -04:00
parent 10362d5944
commit 0e11e686ca
2 changed files with 41 additions and 1 deletions

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

@ -60,16 +60,37 @@ def do_container_create(cs, args):
_show_container(cs.containers.create(**opts))
@utils.arg('--marker',
metavar='<marker>',
default=None,
help='The last bay UUID of the previous page; '
'displays list of bays after "marker".')
@utils.arg('--limit',
metavar='<limit>',
type=int,
help='Maximum number of containers to return')
@utils.arg('--sort-key',
metavar='<sort-key>',
help='Column to sort results by')
@utils.arg('--sort-dir',
metavar='<sort-dir>',
choices=['desc', 'asc'],
help='Direction to sort. "asc" or "desc".')
@utils.arg('--bay',
metavar='<bay>', 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',