diff options
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/tests/volume/v2/test_snapshot.py | 34 | ||||
| -rw-r--r-- | openstackclient/volume/v2/snapshot.py | 17 |
2 files changed, 48 insertions, 3 deletions
diff --git a/openstackclient/tests/volume/v2/test_snapshot.py b/openstackclient/tests/volume/v2/test_snapshot.py index 04e0285e..3eb740ba 100644 --- a/openstackclient/tests/volume/v2/test_snapshot.py +++ b/openstackclient/tests/volume/v2/test_snapshot.py @@ -12,6 +12,7 @@ # under the License. # +import argparse import mock from mock import call @@ -260,16 +261,33 @@ class TestSnapshotList(TestSnapshot): parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) + + self.snapshots_mock.list.assert_called_once_with( + limit=None, marker=None, search_opts={'all_tenants': False}) self.assertEqual(self.columns, columns) self.assertEqual(self.data, list(data)) def test_snapshot_list_with_options(self): - arglist = ["--long"] - verifylist = [("long", True), ('all_projects', False)] + arglist = [ + "--long", + "--limit", "2", + "--marker", self.snapshots[0].id, + ] + verifylist = [ + ("long", True), + ("limit", 2), + ("marker", self.snapshots[0].id), + ('all_projects', False), + ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) columns, data = self.cmd.take_action(parsed_args) + self.snapshots_mock.list.assert_called_once_with( + limit=2, + marker=self.snapshots[0].id, + search_opts={'all_tenants': False} + ) self.assertEqual(self.columns_long, columns) self.assertEqual(self.data_long, list(data)) @@ -285,9 +303,21 @@ class TestSnapshotList(TestSnapshot): columns, data = self.cmd.take_action(parsed_args) + self.snapshots_mock.list.assert_called_once_with( + limit=None, marker=None, search_opts={'all_tenants': True}) self.assertEqual(self.columns, columns) self.assertEqual(self.data, list(data)) + def test_snapshot_list_negative_limit(self): + arglist = [ + "--limit", "-2", + ] + verifylist = [ + ("limit", -2), + ] + self.assertRaises(argparse.ArgumentTypeError, self.check_parser, + self.cmd, arglist, verifylist) + class TestSnapshotSet(TestSnapshot): diff --git a/openstackclient/volume/v2/snapshot.py b/openstackclient/volume/v2/snapshot.py index ba692074..8304a5eb 100644 --- a/openstackclient/volume/v2/snapshot.py +++ b/openstackclient/volume/v2/snapshot.py @@ -134,6 +134,18 @@ class ListSnapshot(command.Lister): default=False, help=_('List additional fields in output'), ) + parser.add_argument( + '--marker', + metavar='<marker>', + help=_('The last snapshot ID of the previous page'), + ) + parser.add_argument( + '--limit', + type=int, + action=parseractions.NonNegativeAction, + metavar='<limit>', + help=_('Maximum number of snapshots to display'), + ) return parser def take_action(self, parsed_args): @@ -174,7 +186,10 @@ class ListSnapshot(command.Lister): } data = self.app.client_manager.volume.volume_snapshots.list( - search_opts=search_opts) + search_opts=search_opts, + marker=parsed_args.marker, + limit=parsed_args.limit, + ) return (column_headers, (utils.get_item_properties( s, columns, |
