Format the output image uuid to name
For user friendliness, it is better to show image name than image uuid in CLI. Change-Id: I17767d56d99e10f59de0a3c15be5f6e98add98eb
This commit is contained in:
parent
2faea31cb6
commit
5ea2e2df4d
@ -337,7 +337,7 @@ class ListServer(command.Lister):
|
|||||||
"Status",
|
"Status",
|
||||||
"Power State",
|
"Power State",
|
||||||
"Networks",
|
"Networks",
|
||||||
"Image",
|
"Image Name",
|
||||||
"Flavor",
|
"Flavor",
|
||||||
"Availability Zone",
|
"Availability Zone",
|
||||||
'Properties',
|
'Properties',
|
||||||
@ -359,7 +359,7 @@ class ListServer(command.Lister):
|
|||||||
"Name",
|
"Name",
|
||||||
"Status",
|
"Status",
|
||||||
"Networks",
|
"Networks",
|
||||||
"Image",
|
"Image Name",
|
||||||
)
|
)
|
||||||
columns = (
|
columns = (
|
||||||
"uuid",
|
"uuid",
|
||||||
@ -371,9 +371,11 @@ class ListServer(command.Lister):
|
|||||||
|
|
||||||
data = bc_client.server.list(detailed=True,
|
data = bc_client.server.list(detailed=True,
|
||||||
all_projects=parsed_args.all_projects)
|
all_projects=parsed_args.all_projects)
|
||||||
|
image_client = self.app.client_manager.image
|
||||||
formatters = {'addresses': self._addresses_formatter,
|
formatters = {'addresses': self._addresses_formatter,
|
||||||
'metadata': utils.format_dict}
|
'metadata': utils.format_dict,
|
||||||
|
'image_uuid': lambda img: image_client.images.get(
|
||||||
|
img).name}
|
||||||
return (column_headers,
|
return (column_headers,
|
||||||
(utils.get_item_properties(
|
(utils.get_item_properties(
|
||||||
s, columns, formatters=formatters
|
s, columns, formatters=formatters
|
||||||
@ -392,6 +394,12 @@ class ShowServer(command.ShowOne):
|
|||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
def _format_image_field(self, data):
|
||||||
|
image_client = self.app.client_manager.image
|
||||||
|
image_uuid = data._info.pop('image_uuid')
|
||||||
|
image = image_client.images.get(image_uuid)
|
||||||
|
return '%s (%s)' % (image.name, image_uuid)
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
bc_client = self.app.client_manager.baremetal_compute
|
bc_client = self.app.client_manager.baremetal_compute
|
||||||
data = utils.find_resource(
|
data = utils.find_resource(
|
||||||
@ -407,6 +415,7 @@ class ShowServer(command.ShowOne):
|
|||||||
'addresses': _addresses_formatter(
|
'addresses': _addresses_formatter(
|
||||||
network_client,
|
network_client,
|
||||||
data._info.pop('addresses')),
|
data._info.pop('addresses')),
|
||||||
|
'image': self._format_image_field(data)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -277,6 +277,11 @@ class TestServerList(test_base.TestBaremetalComputeV1):
|
|||||||
self.app.client_manager.network = mock.Mock()
|
self.app.client_manager.network = mock.Mock()
|
||||||
self.app.client_manager.network.find_network = \
|
self.app.client_manager.network.find_network = \
|
||||||
mock.Mock(return_value=network_obj)
|
mock.Mock(return_value=network_obj)
|
||||||
|
mocked_img = mock.Mock()
|
||||||
|
mocked_img.name = 'test-img'
|
||||||
|
image_mock = mock.MagicMock()
|
||||||
|
image_mock.images.get.return_value = mocked_img
|
||||||
|
self.app.client_manager.image = image_mock
|
||||||
fake_return_net = {
|
fake_return_net = {
|
||||||
"private": [
|
"private": [
|
||||||
{
|
{
|
||||||
@ -298,7 +303,7 @@ class TestServerList(test_base.TestBaremetalComputeV1):
|
|||||||
"Name",
|
"Name",
|
||||||
"Status",
|
"Status",
|
||||||
'Networks',
|
'Networks',
|
||||||
'Image'
|
'Image Name'
|
||||||
)
|
)
|
||||||
|
|
||||||
self.list_columns_long = (
|
self.list_columns_long = (
|
||||||
@ -307,7 +312,7 @@ class TestServerList(test_base.TestBaremetalComputeV1):
|
|||||||
"Status",
|
"Status",
|
||||||
"Power State",
|
"Power State",
|
||||||
"Networks",
|
"Networks",
|
||||||
"Image",
|
"Image Name",
|
||||||
"Flavor",
|
"Flavor",
|
||||||
"Availability Zone",
|
"Availability Zone",
|
||||||
"Properties"
|
"Properties"
|
||||||
@ -318,7 +323,7 @@ class TestServerList(test_base.TestBaremetalComputeV1):
|
|||||||
self.fake_servers[i].name,
|
self.fake_servers[i].name,
|
||||||
self.fake_servers[i].status,
|
self.fake_servers[i].status,
|
||||||
'private=172.24.4.4, 2001:db8::a',
|
'private=172.24.4.4, 2001:db8::a',
|
||||||
self.fake_servers[i].image_uuid,
|
'test-img',
|
||||||
) for i in range(3))
|
) for i in range(3))
|
||||||
|
|
||||||
self.list_data_long = tuple((
|
self.list_data_long = tuple((
|
||||||
@ -327,7 +332,7 @@ class TestServerList(test_base.TestBaremetalComputeV1):
|
|||||||
self.fake_servers[i].status,
|
self.fake_servers[i].status,
|
||||||
self.fake_servers[i].power_state,
|
self.fake_servers[i].power_state,
|
||||||
'private=172.24.4.4, 2001:db8::a',
|
'private=172.24.4.4, 2001:db8::a',
|
||||||
self.fake_servers[i].image_uuid,
|
'test-img',
|
||||||
self.fake_servers[i].flavor_uuid,
|
self.fake_servers[i].flavor_uuid,
|
||||||
self.fake_servers[i].availability_zone,
|
self.fake_servers[i].availability_zone,
|
||||||
'',
|
'',
|
||||||
@ -421,6 +426,11 @@ class TestServerShow(test_base.TestBaremetalComputeV1):
|
|||||||
super(TestServerShow, self).setUp()
|
super(TestServerShow, self).setUp()
|
||||||
self.cmd = server.ShowServer(self.app, None)
|
self.cmd = server.ShowServer(self.app, None)
|
||||||
self.fake_server = fakes.FakeServer.create_one_server()
|
self.fake_server = fakes.FakeServer.create_one_server()
|
||||||
|
mocked_img = mock.Mock()
|
||||||
|
mocked_img.name = 'test-img'
|
||||||
|
image_mock = mock.MagicMock()
|
||||||
|
image_mock.images.get.return_value = mocked_img
|
||||||
|
self.app.client_manager.image = image_mock
|
||||||
|
|
||||||
def test_server_show_with_uuid_specified(self, mock_get):
|
def test_server_show_with_uuid_specified(self, mock_get):
|
||||||
args = [self.fake_server.uuid]
|
args = [self.fake_server.uuid]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user