Add more columns to server list

Show more information to users when run server list.

Change-Id: I23843cc07bc2dde55e9a2047fe89151695495365
This commit is contained in:
Zhenguo Niu 2017-04-12 16:07:24 +08:00
parent 7fa12bda72
commit 59852bde2b
3 changed files with 30 additions and 23 deletions

View File

@ -18,6 +18,7 @@
import json
import logging
import os
from osc_lib.cli import parseractions
from osc_lib.command import command
@ -207,9 +208,8 @@ class ListServer(command.Lister):
parser.add_argument(
'--all-projects',
action='store_true',
default=False,
help=_("List the baremetal servers of all projects, "
"only available for admin users.")
default=bool(int(os.environ.get("ALL_PROJECTS", 0))),
help=_('Include all projects (admin only)'),
)
return parser
@ -227,46 +227,49 @@ class ListServer(command.Lister):
bc_client = self.app.client_manager.baremetal_compute
if parsed_args.long:
data = bc_client.server.list(detailed=True,
all_projects=parsed_args.all_projects)
formatters = {'network_info': self._networks_formatter}
# This is the easiest way to change column headers
column_headers = (
"UUID",
"Name",
"Flavor",
"Status",
"Power State",
"Networks",
"Image",
"Description",
"Flavor",
"Availability Zone",
"Networks"
'Properties',
)
columns = (
"uuid",
"name",
"instance_type_uuid",
"status",
"power_state",
"network_info",
"image_uuid",
"description",
"instance_type_uuid",
"availability_zone",
"network_info"
'extra',
)
else:
data = bc_client.server.list(all_projects=parsed_args.all_projects)
formatters = None
column_headers = (
"UUID",
"Name",
"Status",
"Networks",
"Image",
)
columns = (
"uuid",
"name",
"status",
"network_info",
"image_uuid",
)
data = bc_client.server.list(detailed=True,
all_projects=parsed_args.all_projects)
formatters = {'network_info': self._networks_formatter,
'extra': utils.format_dict}
return (column_headers,
(utils.get_item_properties(
s, columns, formatters=formatters

View File

@ -260,7 +260,7 @@ class FakeServer(object):
dashed=False),
"availability_zone": "zone-name-" + uuidutils.generate_uuid(
dashed=False),
'extra': "fake_extra"
'extra': {}
}
# Overwrite default attributes.

View File

@ -309,36 +309,40 @@ class TestServerList(test_base.TestBaremetalComputeV1):
"UUID",
"Name",
"Status",
'Networks',
'Image'
)
self.list_columns_long = (
"UUID",
"Name",
"Flavor",
"Status",
"Power State",
"Networks",
"Image",
"Description",
"Flavor",
"Availability Zone",
"Networks"
"Properties"
)
self.list_data = tuple((
self.fake_servers[i].uuid,
self.fake_servers[i].name,
self.fake_servers[i].status,
'172.24.4.4, 2001:db8::a',
self.fake_servers[i].image_uuid,
) for i in range(3))
self.list_data_long = tuple((
self.fake_servers[i].uuid,
self.fake_servers[i].name,
self.fake_servers[i].instance_type_uuid,
self.fake_servers[i].status,
self.fake_servers[i].power_state,
'172.24.4.4, 2001:db8::a',
self.fake_servers[i].image_uuid,
self.fake_servers[i].description,
self.fake_servers[i].instance_type_uuid,
self.fake_servers[i].availability_zone,
'172.24.4.4, 2001:db8::a'
'',
) for i in range(3))
def test_server_list(self, mock_list):
@ -347,7 +351,7 @@ class TestServerList(test_base.TestBaremetalComputeV1):
mock_list.return_value = self.fake_servers
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
mock_list.assert_called_once_with('/instances',
mock_list.assert_called_once_with('/instances/detail',
response_key='instances')
self.assertEqual(self.list_columns, columns)
self.assertEqual(self.list_data, tuple(data))
@ -377,7 +381,7 @@ class TestServerList(test_base.TestBaremetalComputeV1):
mock_list.return_value = self.fake_servers
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
mock_list.assert_called_once_with('/instances?all_tenants=True',
mock_list.assert_called_once_with('/instances/detail?all_tenants=True',
response_key='instances')
self.assertEqual(self.list_columns, columns)
self.assertEqual(self.list_data, tuple(data))