diff options
| author | Jenkins <jenkins@review.openstack.org> | 2015-01-08 23:04:51 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2015-01-08 23:04:51 +0000 |
| commit | e252bae4c7fe7c01bef0f4c1140369fbce73a44c (patch) | |
| tree | 6774e7768383156a8f29a3bba1567496b4cc699d /openstackclient/volume | |
| parent | 3c57603caf5ae2f3cec5bb0d6620417fc3600a67 (diff) | |
| parent | 55b85403744840e8327a6184ab3464d602e93e3f (diff) | |
| download | python-openstackclient-e252bae4c7fe7c01bef0f4c1140369fbce73a44c.tar.gz | |
Merge "Fixup backup list output"
Diffstat (limited to 'openstackclient/volume')
| -rw-r--r-- | openstackclient/volume/v1/backup.py | 54 |
1 files changed, 45 insertions, 9 deletions
diff --git a/openstackclient/volume/v1/backup.py b/openstackclient/volume/v1/backup.py index 8c16ba25..eab388a5 100644 --- a/openstackclient/volume/v1/backup.py +++ b/openstackclient/volume/v1/backup.py @@ -15,6 +15,7 @@ """Volume v1 Backup action implementations""" +import copy import logging import six @@ -102,20 +103,55 @@ class ListBackup(lister.Lister): log = logging.getLogger(__name__ + '.ListBackup') + def get_parser(self, prog_name): + parser = super(ListBackup, self).get_parser(prog_name) + parser.add_argument( + '--long', + action='store_true', + default=False, + help='List additional fields in output', + ) + return parser + def take_action(self, parsed_args): self.log.debug('take_action(%s)', parsed_args) - columns = ( - 'ID', - 'Display Name', - 'Display Description', - 'Status', - 'Size' - ) + + def _format_volume_id(volume_id): + """Return a volume name if available + + :param volume_id: a volume ID + :rtype: either the volume ID or name + """ + + volume = volume_id + if volume_id in volume_cache.keys(): + volume = volume_cache[volume_id].display_name + return volume + + if parsed_args.long: + columns = ['ID', 'Name', 'Description', 'Status', 'Size', + 'Availability Zone', 'Volume ID', 'Container'] + column_headers = copy.deepcopy(columns) + column_headers[6] = 'Volume' + else: + columns = ['ID', 'Name', 'Description', 'Status', 'Size'] + column_headers = columns + + # Cache the volume list + volume_cache = {} + try: + for s in self.app.client_manager.volume.volumes.list(): + volume_cache[s.id] = s + except Exception: + # Just forget it if there's any trouble + pass + data = self.app.client_manager.volume.backups.list() - return (columns, + + return (column_headers, (utils.get_item_properties( s, columns, - formatters={}, + formatters={'Volume ID': _format_volume_id}, ) for s in data)) |
