summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-12-30 21:01:10 +0000
committerGerrit Code Review <review@openstack.org>2014-12-30 21:01:10 +0000
commit457f4c899845abc1f9fe54fbb694efeeb61313d8 (patch)
tree2189e2f98bee1405970e73441ef8850418a82869
parent8593b0a56a68088ac22570ee4e5b64e45932e4e6 (diff)
parent71d9c8b5b343011bb0c9d90dab9cb75510d4c618 (diff)
downloadpython-openstackclient-457f4c899845abc1f9fe54fbb694efeeb61313d8.tar.gz
Merge "Properly format 'attached to' column list when listing volumes"
-rw-r--r--openstackclient/volume/v1/volume.py41
1 files changed, 35 insertions, 6 deletions
diff --git a/openstackclient/volume/v1/volume.py b/openstackclient/volume/v1/volume.py
index 73ae3a7f..d82f6b4b 100644
--- a/openstackclient/volume/v1/volume.py
+++ b/openstackclient/volume/v1/volume.py
@@ -223,6 +223,25 @@ class ListVolume(lister.Lister):
def take_action(self, parsed_args):
self.log.debug('take_action(%s)', parsed_args)
+ volume_client = self.app.client_manager.volume
+ compute_client = self.app.client_manager.compute
+
+ def _format_attach(attachments):
+ """Return a formatted string of a volume's attached instances
+
+ :param volume: a volume.attachments field
+ :rtype: a string of formatted instances
+ """
+
+ msg = ''
+ for attachment in attachments:
+ server = attachment['server_id']
+ if server in server_cache.keys():
+ server = server_cache[server].name
+ device = attachment['device']
+ msg += 'Attached to %s on %s ' % (server, device)
+ return msg
+
if parsed_args.long:
columns = (
'ID',
@@ -231,7 +250,7 @@ class ListVolume(lister.Lister):
'Size',
'Volume Type',
'Bootable',
- 'Attached to',
+ 'Attachments',
'Metadata',
)
column_headers = (
@@ -241,7 +260,7 @@ class ListVolume(lister.Lister):
'Size',
'Type',
'Bootable',
- 'Attached',
+ 'Attached to',
'Properties',
)
else:
@@ -250,28 +269,38 @@ class ListVolume(lister.Lister):
'Display Name',
'Status',
'Size',
- 'Attached to',
+ 'Attachments',
)
column_headers = (
'ID',
'Display Name',
'Status',
'Size',
- 'Attached',
+ 'Attached to',
)
+
+ # Cache the server list
+ server_cache = {}
+ try:
+ for s in compute_client.servers.list():
+ server_cache[s.id] = s
+ except Exception:
+ # Just forget it if there's any trouble
+ pass
+
search_opts = {
'all_tenants': parsed_args.all_projects,
'display_name': parsed_args.name,
'status': parsed_args.status,
}
- volume_client = self.app.client_manager.volume
data = volume_client.volumes.list(search_opts=search_opts)
return (column_headers,
(utils.get_item_properties(
s, columns,
- formatters={'Metadata': utils.format_dict},
+ formatters={'Metadata': utils.format_dict,
+ 'Attachments': _format_attach},
) for s in data))