Merge "Add "server group list" command"

This commit is contained in:
Jenkins 2016-04-20 18:26:44 +00:00 committed by Gerrit Code Review
commit f26b085f84
4 changed files with 146 additions and 0 deletions

View File

@ -43,3 +43,23 @@ Delete an existing server group
Server group(s) to delete (name or ID) Server group(s) to delete (name or ID)
(repeat to delete multiple server groups) (repeat to delete multiple server groups)
server group list
-----------------
List all server groups
.. program:: server group list
.. code-block:: bash
os server group list
[--all-projects]
[--long]
.. option:: --all-projects
Display information from all projects (admin only)
.. option:: --long
List additional fields in output

View File

@ -99,3 +99,60 @@ class DeleteServerGroup(command.Command):
total = len(parsed_args.server_group) total = len(parsed_args.server_group)
msg = "%s of %s server groups failed to delete." % (result, total) msg = "%s of %s server groups failed to delete." % (result, total)
raise exceptions.CommandError(msg) raise exceptions.CommandError(msg)
class ListServerGroup(command.Lister):
"""List all server groups."""
def get_parser(self, prog_name):
parser = super(ListServerGroup, self).get_parser(prog_name)
parser.add_argument(
'--all-projects',
action='store_true',
default=False,
help='Display information from all projects (admin only)',
)
parser.add_argument(
'--long',
action='store_true',
default=False,
help='List additional fields in output',
)
return parser
def take_action(self, parsed_args):
compute_client = self.app.client_manager.compute
data = compute_client.server_groups.list(parsed_args.all_projects)
if parsed_args.long:
column_headers = (
'ID',
'Name',
'Policies',
'Members',
'Project Id',
'User Id',
)
columns = (
'ID',
'Name',
'Policies',
'Members',
'Project Id',
'User Id',
)
else:
column_headers = columns = (
'ID',
'Name',
'Policies',
)
return (column_headers,
(utils.get_item_properties(
s, columns,
formatters={
'Policies': utils.format_list,
'Members': utils.format_list,
}
) for s in data))

View File

@ -190,3 +190,71 @@ class TestServerGroupDelete(TestServerGroup):
self.server_groups_mock.delete.assert_called_once_with( self.server_groups_mock.delete.assert_called_once_with(
self.fake_server_group.id self.fake_server_group.id
) )
class TestServerGroupList(TestServerGroup):
list_columns = (
'ID',
'Name',
'Policies',
)
list_columns_long = (
'ID',
'Name',
'Policies',
'Members',
'Project Id',
'User Id',
)
list_data = ((
TestServerGroup.fake_server_group.id,
TestServerGroup.fake_server_group.name,
utils.format_list(TestServerGroup.fake_server_group.policies),
),)
list_data_long = ((
TestServerGroup.fake_server_group.id,
TestServerGroup.fake_server_group.name,
utils.format_list(TestServerGroup.fake_server_group.policies),
utils.format_list(TestServerGroup.fake_server_group.members),
TestServerGroup.fake_server_group.project_id,
TestServerGroup.fake_server_group.user_id,
),)
def setUp(self):
super(TestServerGroupList, self).setUp()
self.server_groups_mock.list.return_value = [self.fake_server_group]
self.cmd = server_group.ListServerGroup(self.app, None)
def test_server_group_list(self):
arglist = []
verifylist = [
('all_projects', False),
('long', False),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
self.server_groups_mock.list.assert_called_once_with(False)
self.assertEqual(self.list_columns, columns)
self.assertEqual(self.list_data, tuple(data))
def test_server_group_list_with_all_projects_and_long(self):
arglist = [
'--all-projects',
'--long',
]
verifylist = [
('all_projects', True),
('long', True),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
self.server_groups_mock.list.assert_called_once_with(True)
self.assertEqual(self.list_columns_long, columns)
self.assertEqual(self.list_data_long, tuple(data))

View File

@ -133,6 +133,7 @@ openstack.compute.v2 =
server_group_create = openstackclient.compute.v2.server_group:CreateServerGroup server_group_create = openstackclient.compute.v2.server_group:CreateServerGroup
server_group_delete = openstackclient.compute.v2.server_group:DeleteServerGroup server_group_delete = openstackclient.compute.v2.server_group:DeleteServerGroup
server_group_list = openstackclient.compute.v2.server_group:ListServerGroup
usage_list = openstackclient.compute.v2.usage:ListUsage usage_list = openstackclient.compute.v2.usage:ListUsage
usage_show = openstackclient.compute.v2.usage:ShowUsage usage_show = openstackclient.compute.v2.usage:ShowUsage