Add 'all-projects' option to 'volume backup list'

Similar to what 'volume list --all-projects' does, 'volume backup
list --all-projects' list volume backups accross all projects.

Change-Id: Id5dda9b5adc822c4ddfb2dda339946d3322858e2
This commit is contained in:
Jordan Pittier 2016-11-04 13:13:20 +01:00
parent e07b0e0919
commit 55669b90c0
6 changed files with 36 additions and 3 deletions

View File

@ -94,6 +94,7 @@ List volume backups
[--volume <volume>] [--volume <volume>]
[--marker <marker>] [--marker <marker>]
[--limit <limit>] [--limit <limit>]
[--all-projects]
.. _volume_backup_list-backup: .. _volume_backup_list-backup:
.. option:: --long .. option:: --long
@ -125,6 +126,10 @@ List volume backups
*Volume version 2 only* *Volume version 2 only*
.. option:: --all-projects
Include all projects (admin only)
volume backup restore volume backup restore
--------------------- ---------------------

View File

@ -260,6 +260,7 @@ class TestBackupList(TestBackup):
("name", None), ("name", None),
("status", None), ("status", None),
("volume", None), ("volume", None),
('all_projects', False),
] ]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -269,8 +270,9 @@ class TestBackupList(TestBackup):
"name": None, "name": None,
"status": None, "status": None,
"volume_id": None, "volume_id": None,
"all_tenants": False,
} }
self.volumes_mock.get.assert_not_called self.volumes_mock.get.assert_not_called()
self.backups_mock.list.assert_called_with( self.backups_mock.list.assert_called_with(
search_opts=search_opts, search_opts=search_opts,
) )
@ -283,12 +285,14 @@ class TestBackupList(TestBackup):
"--name", self.backups[0].name, "--name", self.backups[0].name,
"--status", "error", "--status", "error",
"--volume", self.volume.id, "--volume", self.volume.id,
"--all-projects"
] ]
verifylist = [ verifylist = [
("long", True), ("long", True),
("name", self.backups[0].name), ("name", self.backups[0].name),
("status", "error"), ("status", "error"),
("volume", self.volume.id), ("volume", self.volume.id),
('all_projects', True),
] ]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -298,6 +302,7 @@ class TestBackupList(TestBackup):
"name": self.backups[0].name, "name": self.backups[0].name,
"status": "error", "status": "error",
"volume_id": self.volume.id, "volume_id": self.volume.id,
"all_tenants": True,
} }
self.volumes_mock.get.assert_called_once_with(self.volume.id) self.volumes_mock.get.assert_called_once_with(self.volume.id)
self.backups_mock.list.assert_called_with( self.backups_mock.list.assert_called_with(

View File

@ -294,6 +294,7 @@ class TestBackupList(TestBackup):
("volume", None), ("volume", None),
("marker", None), ("marker", None),
("limit", None), ("limit", None),
('all_projects', False),
] ]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -303,9 +304,10 @@ class TestBackupList(TestBackup):
"name": None, "name": None,
"status": None, "status": None,
"volume_id": None, "volume_id": None,
'all_tenants': False,
} }
self.volumes_mock.get.assert_not_called self.volumes_mock.get.assert_not_called()
self.backups_mock.get.assert_not_called self.backups_mock.get.assert_not_called()
self.backups_mock.list.assert_called_with( self.backups_mock.list.assert_called_with(
search_opts=search_opts, search_opts=search_opts,
marker=None, marker=None,
@ -321,6 +323,7 @@ class TestBackupList(TestBackup):
"--status", "error", "--status", "error",
"--volume", self.volume.id, "--volume", self.volume.id,
"--marker", self.backups[0].id, "--marker", self.backups[0].id,
"--all-projects",
"--limit", "3", "--limit", "3",
] ]
verifylist = [ verifylist = [
@ -329,6 +332,7 @@ class TestBackupList(TestBackup):
("status", "error"), ("status", "error"),
("volume", self.volume.id), ("volume", self.volume.id),
("marker", self.backups[0].id), ("marker", self.backups[0].id),
('all_projects', True),
("limit", 3), ("limit", 3),
] ]
@ -339,6 +343,7 @@ class TestBackupList(TestBackup):
"name": self.backups[0].name, "name": self.backups[0].name,
"status": "error", "status": "error",
"volume_id": self.volume.id, "volume_id": self.volume.id,
'all_tenants': True,
} }
self.volumes_mock.get.assert_called_once_with(self.volume.id) self.volumes_mock.get.assert_called_once_with(self.volume.id)
self.backups_mock.get.assert_called_once_with(self.backups[0].id) self.backups_mock.get.assert_called_once_with(self.backups[0].id)

View File

@ -172,6 +172,12 @@ class ListVolumeBackup(command.Lister):
help=_("Filters results by the volume which they " help=_("Filters results by the volume which they "
"backup (name or ID)") "backup (name or ID)")
) )
parser.add_argument(
'--all-projects',
action='store_true',
default=False,
help=_('Include all projects (admin only)'),
)
return parser return parser
def take_action(self, parsed_args): def take_action(self, parsed_args):
@ -215,6 +221,7 @@ class ListVolumeBackup(command.Lister):
'name': parsed_args.name, 'name': parsed_args.name,
'status': parsed_args.status, 'status': parsed_args.status,
'volume_id': filter_volume_id, 'volume_id': filter_volume_id,
'all_tenants': parsed_args.all_projects,
} }
data = volume_client.backups.list( data = volume_client.backups.list(
search_opts=search_opts, search_opts=search_opts,

View File

@ -212,6 +212,12 @@ class ListVolumeBackup(command.Lister):
metavar='<limit>', metavar='<limit>',
help=_('Maximum number of backups to display'), help=_('Maximum number of backups to display'),
) )
parser.add_argument(
'--all-projects',
action='store_true',
default=False,
help=_('Include all projects (admin only)'),
)
return parser return parser
def take_action(self, parsed_args): def take_action(self, parsed_args):
@ -259,6 +265,7 @@ class ListVolumeBackup(command.Lister):
'name': parsed_args.name, 'name': parsed_args.name,
'status': parsed_args.status, 'status': parsed_args.status,
'volume_id': filter_volume_id, 'volume_id': filter_volume_id,
'all_tenants': parsed_args.all_projects,
} }
data = volume_client.backups.list( data = volume_client.backups.list(
search_opts=search_opts, search_opts=search_opts,

View File

@ -0,0 +1,4 @@
---
features:
- The ``openstack volume backup list`` command now supports the
``all-projects`` option to list volume backups accross all projects.