server-group-list support 'all_projects' parameter

Supporting 'all_projects' in server-group-list so that
admin users can list other tenant's server groups.

Change-Id: Ie50288464ebc6585590a1a74efa8804584771ebc
Closes-Bug: #1454523
This commit is contained in:
Rui Chen 2015-05-13 16:06:21 +08:00
parent 0e35f2a2fa
commit 9cfecf922a
4 changed files with 25 additions and 3 deletions

View File

@ -31,6 +31,13 @@ class ServerGroupsTest(utils.FixturedTestCase):
self.assertTrue(isinstance(server_group,
server_groups.ServerGroup))
def test_list_server_groups_with_all_projects(self):
result = self.cs.server_groups.list(all_projects=True)
self.assert_called('GET', '/os-server-groups?all_projects')
for server_group in result:
self.assertTrue(isinstance(server_group,
server_groups.ServerGroup))
def test_create_server_group(self):
kwargs = {'name': 'ig1',
'policies': ['anti-affinity']}

View File

@ -2405,6 +2405,14 @@ class ShellTest(utils.TestCase):
self.assert_called('DELETE', '/os-server-groups/56789')
self.assert_called('DELETE', '/os-server-groups/12345', pos=-2)
def test_list_server_group(self):
self.run_command('server-group-list')
self.assert_called('GET', '/os-server-groups')
def test_list_server_group_with_all_projects(self):
self.run_command('server-group-list --all-projects')
self.assert_called('GET', '/os-server-groups?all_projects')
class ShellTestV11(ShellTest):
FAKE_ENV = {

View File

@ -39,12 +39,13 @@ class ServerGroupsManager(base.ManagerWithFind):
"""
resource_class = ServerGroup
def list(self):
def list(self, all_projects=False):
"""Get a list of all server groups.
:rtype: list of :class:`ServerGroup`.
"""
return self._list('/os-server-groups', 'server_groups')
all = '?all_projects' if all_projects else ''
return self._list('/os-server-groups%s' % all, 'server_groups')
def get(self, id):
"""Get a specific server group.

View File

@ -4350,9 +4350,15 @@ def _print_server_group_details(server_group):
utils.print_list(server_group, columns)
@cliutils.arg(
'--all-projects',
dest='all_projects',
action='store_true',
default=False,
help=_('Display server groups from all projects (Admin only).'))
def do_server_group_list(cs, args):
"""Print a list of all server groups."""
server_groups = cs.server_groups.list()
server_groups = cs.server_groups.list(args.all_projects)
_print_server_group_details(server_groups)