Skip to content

Commit 61b9d9f

Browse files
author
Huanxuan Ao
committed
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
1 parent d20d97f commit 61b9d9f

4 files changed

Lines changed: 68 additions & 3 deletions

File tree

doc/source/command-objects/snapshot.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ List snapshots
6868
6969
os snapshot list
7070
[--all-projects]
71+
[--long]
72+
[--limit <limit>]
73+
[--marker <marker>]
7174
7275
.. option:: --all-projects
7376

@@ -77,6 +80,18 @@ List snapshots
7780

7881
List additional fields in output
7982

83+
.. option:: --limit <limit>
84+
85+
Maximum number of snapshots to display
86+
87+
*Volume version 2 only*
88+
89+
.. option:: --marker <marker>
90+
91+
The last snapshot ID of the previous page
92+
93+
*Volume version 2 only*
94+
8095
snapshot set
8196
------------
8297

openstackclient/tests/volume/v2/test_snapshot.py

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
# under the License.
1313
#
1414

15+
import argparse
1516
import mock
1617
from mock import call
1718

@@ -260,16 +261,33 @@ def test_snapshot_list_without_options(self):
260261
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
261262

262263
columns, data = self.cmd.take_action(parsed_args)
264+
265+
self.snapshots_mock.list.assert_called_once_with(
266+
limit=None, marker=None, search_opts={'all_tenants': False})
263267
self.assertEqual(self.columns, columns)
264268
self.assertEqual(self.data, list(data))
265269

266270
def test_snapshot_list_with_options(self):
267-
arglist = ["--long"]
268-
verifylist = [("long", True), ('all_projects', False)]
271+
arglist = [
272+
"--long",
273+
"--limit", "2",
274+
"--marker", self.snapshots[0].id,
275+
]
276+
verifylist = [
277+
("long", True),
278+
("limit", 2),
279+
("marker", self.snapshots[0].id),
280+
('all_projects', False),
281+
]
269282
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
270283

271284
columns, data = self.cmd.take_action(parsed_args)
272285

286+
self.snapshots_mock.list.assert_called_once_with(
287+
limit=2,
288+
marker=self.snapshots[0].id,
289+
search_opts={'all_tenants': False}
290+
)
273291
self.assertEqual(self.columns_long, columns)
274292
self.assertEqual(self.data_long, list(data))
275293

@@ -285,9 +303,21 @@ def test_snapshot_list_all_projects(self):
285303

286304
columns, data = self.cmd.take_action(parsed_args)
287305

306+
self.snapshots_mock.list.assert_called_once_with(
307+
limit=None, marker=None, search_opts={'all_tenants': True})
288308
self.assertEqual(self.columns, columns)
289309
self.assertEqual(self.data, list(data))
290310

311+
def test_snapshot_list_negative_limit(self):
312+
arglist = [
313+
"--limit", "-2",
314+
]
315+
verifylist = [
316+
("limit", -2),
317+
]
318+
self.assertRaises(argparse.ArgumentTypeError, self.check_parser,
319+
self.cmd, arglist, verifylist)
320+
291321

292322
class TestSnapshotSet(TestSnapshot):
293323

openstackclient/volume/v2/snapshot.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,18 @@ def get_parser(self, prog_name):
134134
default=False,
135135
help=_('List additional fields in output'),
136136
)
137+
parser.add_argument(
138+
'--marker',
139+
metavar='<marker>',
140+
help=_('The last snapshot ID of the previous page'),
141+
)
142+
parser.add_argument(
143+
'--limit',
144+
type=int,
145+
action=parseractions.NonNegativeAction,
146+
metavar='<limit>',
147+
help=_('Maximum number of snapshots to display'),
148+
)
137149
return parser
138150

139151
def take_action(self, parsed_args):
@@ -174,7 +186,10 @@ def _format_volume_id(volume_id):
174186
}
175187

176188
data = self.app.client_manager.volume.volume_snapshots.list(
177-
search_opts=search_opts)
189+
search_opts=search_opts,
190+
marker=parsed_args.marker,
191+
limit=parsed_args.limit,
192+
)
178193
return (column_headers,
179194
(utils.get_item_properties(
180195
s, columns,
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
features:
3+
- |
4+
Add ``--limit`` and ``--marker`` options to ``snapshot list`` command.
5+
[Bug `1605475 <https://bugs.launchpad.net/bugs/1605475>`_]

0 commit comments

Comments
 (0)