Add "--marker" and "--limit" options to "snapshot list"
Add "--marker" and "--limit" options to "snapshot list" command in volume v2 (v2 only). Change-Id: Ib60840b9b83dfe5e599e4037e8ec308844a9448b Closes-Bug: #1605475
This commit is contained in:
parent
d20d97fd09
commit
61b9d9fe2d
@ -68,6 +68,9 @@ List snapshots
|
|||||||
|
|
||||||
os snapshot list
|
os snapshot list
|
||||||
[--all-projects]
|
[--all-projects]
|
||||||
|
[--long]
|
||||||
|
[--limit <limit>]
|
||||||
|
[--marker <marker>]
|
||||||
|
|
||||||
.. option:: --all-projects
|
.. option:: --all-projects
|
||||||
|
|
||||||
@ -77,6 +80,18 @@ List snapshots
|
|||||||
|
|
||||||
List additional fields in output
|
List additional fields in output
|
||||||
|
|
||||||
|
.. option:: --limit <limit>
|
||||||
|
|
||||||
|
Maximum number of snapshots to display
|
||||||
|
|
||||||
|
*Volume version 2 only*
|
||||||
|
|
||||||
|
.. option:: --marker <marker>
|
||||||
|
|
||||||
|
The last snapshot ID of the previous page
|
||||||
|
|
||||||
|
*Volume version 2 only*
|
||||||
|
|
||||||
snapshot set
|
snapshot set
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
import argparse
|
||||||
import mock
|
import mock
|
||||||
from mock import call
|
from mock import call
|
||||||
|
|
||||||
@ -260,16 +261,33 @@ class TestSnapshotList(TestSnapshot):
|
|||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
columns, data = self.cmd.take_action(parsed_args)
|
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.columns, columns)
|
||||||
self.assertEqual(self.data, list(data))
|
self.assertEqual(self.data, list(data))
|
||||||
|
|
||||||
def test_snapshot_list_with_options(self):
|
def test_snapshot_list_with_options(self):
|
||||||
arglist = ["--long"]
|
arglist = [
|
||||||
verifylist = [("long", True), ('all_projects', False)]
|
"--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)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
columns, data = self.cmd.take_action(parsed_args)
|
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.columns_long, columns)
|
||||||
self.assertEqual(self.data_long, list(data))
|
self.assertEqual(self.data_long, list(data))
|
||||||
|
|
||||||
@ -285,9 +303,21 @@ class TestSnapshotList(TestSnapshot):
|
|||||||
|
|
||||||
columns, data = self.cmd.take_action(parsed_args)
|
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.columns, columns)
|
||||||
self.assertEqual(self.data, list(data))
|
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):
|
class TestSnapshotSet(TestSnapshot):
|
||||||
|
|
||||||
|
@ -134,6 +134,18 @@ class ListSnapshot(command.Lister):
|
|||||||
default=False,
|
default=False,
|
||||||
help=_('List additional fields in output'),
|
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
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
@ -174,7 +186,10 @@ class ListSnapshot(command.Lister):
|
|||||||
}
|
}
|
||||||
|
|
||||||
data = self.app.client_manager.volume.volume_snapshots.list(
|
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,
|
return (column_headers,
|
||||||
(utils.get_item_properties(
|
(utils.get_item_properties(
|
||||||
s, columns,
|
s, columns,
|
||||||
|
5
releasenotes/notes/bug-1605475-84e649fb8c675737.yaml
Normal file
5
releasenotes/notes/bug-1605475-84e649fb8c675737.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Add ``--limit`` and ``--marker`` options to ``snapshot list`` command.
|
||||||
|
[Bug `1605475 <https://bugs.launchpad.net/bugs/1605475>`_]
|
Loading…
Reference in New Issue
Block a user