diff options
| author | Jenkins <jenkins@review.openstack.org> | 2014-12-30 21:01:10 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2014-12-30 21:01:10 +0000 |
| commit | 457f4c899845abc1f9fe54fbb694efeeb61313d8 (patch) | |
| tree | 2189e2f98bee1405970e73441ef8850418a82869 /openstackclient | |
| parent | 8593b0a56a68088ac22570ee4e5b64e45932e4e6 (diff) | |
| parent | 71d9c8b5b343011bb0c9d90dab9cb75510d4c618 (diff) | |
| download | python-openstackclient-457f4c899845abc1f9fe54fbb694efeeb61313d8.tar.gz | |
Merge "Properly format 'attached to' column list when listing volumes"
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/volume/v1/volume.py | 41 |
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)) |
