Skip to content

Commit 9168373

Browse files
committed
Consistency of the --all argument for snapshots
This change is inspired by the volume.py. It allow the user to use openstack snapshot list --all. Closes-Bug: #1517386 Change-Id: I72a53fcd0c5c5af539cd88b37e71b4331fa67473
1 parent 12cc634 commit 9168373

4 files changed

Lines changed: 61 additions & 3 deletions

File tree

doc/source/command-objects/snapshot.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ List snapshots
6060
.. code:: bash
6161
6262
os snapshot list
63+
[--all-projects]
64+
65+
.. option:: --all-projects
66+
67+
Include all projects (admin only)
6368

6469
.. option:: --long
6570

openstackclient/tests/volume/v2/test_snapshot.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ def setUp(self):
225225
def test_snapshot_list_without_options(self):
226226
arglist = []
227227
verifylist = [
228+
('all_projects', False),
228229
("long", False)
229230
]
230231
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -243,7 +244,7 @@ def test_snapshot_list_without_options(self):
243244

244245
def test_snapshot_list_with_options(self):
245246
arglist = ["--long"]
246-
verifylist = [("long", True)]
247+
verifylist = [("long", True), ('all_projects', False)]
247248
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
248249

249250
columns, data = self.cmd.take_action(parsed_args)
@@ -263,3 +264,33 @@ def test_snapshot_list_with_options(self):
263264
volume_fakes.EXPECTED_SNAPSHOT.get("properties")
264265
),)
265266
self.assertEqual(datalist, tuple(data))
267+
268+
def test_snapshot_list_all_projects(self):
269+
arglist = [
270+
'--all-projects',
271+
]
272+
verifylist = [
273+
('long', False),
274+
('all_projects', True)
275+
]
276+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
277+
278+
columns, data = self.cmd.take_action(parsed_args)
279+
280+
collist = [
281+
"ID",
282+
"Name",
283+
"Description",
284+
"Status",
285+
"Size"
286+
]
287+
self.assertEqual(collist, columns)
288+
289+
datalist = ((
290+
volume_fakes.snapshot_id,
291+
volume_fakes.snapshot_name,
292+
volume_fakes.snapshot_description,
293+
"available",
294+
volume_fakes.snapshot_size
295+
), )
296+
self.assertEqual(datalist, tuple(data))

openstackclient/volume/v1/snapshot.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,12 @@ class ListSnapshot(lister.Lister):
110110

111111
def get_parser(self, prog_name):
112112
parser = super(ListSnapshot, self).get_parser(prog_name)
113+
parser.add_argument(
114+
'--all-projects',
115+
action='store_true',
116+
default=False,
117+
help='Include all projects (admin only)',
118+
)
113119
parser.add_argument(
114120
'--long',
115121
action='store_true',
@@ -157,7 +163,12 @@ def _format_volume_id(volume_id):
157163
# Just forget it if there's any trouble
158164
pass
159165

160-
data = self.app.client_manager.volume.volume_snapshots.list()
166+
search_opts = {
167+
'all_tenants': parsed_args.all_projects,
168+
}
169+
170+
data = self.app.client_manager.volume.volume_snapshots.list(
171+
search_opts=search_opts)
161172
return (column_headers,
162173
(utils.get_item_properties(
163174
s, columns,

openstackclient/volume/v2/snapshot.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,12 @@ class ListSnapshot(lister.Lister):
107107

108108
def get_parser(self, prog_name):
109109
parser = super(ListSnapshot, self).get_parser(prog_name)
110+
parser.add_argument(
111+
'--all-projects',
112+
action='store_true',
113+
default=False,
114+
help='Include all projects (admin only)',
115+
)
110116
parser.add_argument(
111117
'--long',
112118
action='store_true',
@@ -149,7 +155,12 @@ def _format_volume_id(volume_id):
149155
# Just forget it if there's any trouble
150156
pass
151157

152-
data = self.app.client_manager.volume.volume_snapshots.list()
158+
search_opts = {
159+
'all_tenants': parsed_args.all_projects,
160+
}
161+
162+
data = self.app.client_manager.volume.volume_snapshots.list(
163+
search_opts=search_opts)
153164
return (column_headers,
154165
(utils.get_item_properties(
155166
s, columns,

0 commit comments

Comments
 (0)