summaryrefslogtreecommitdiff
path: root/openstackclient/volume
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-01-08 23:04:51 +0000
committerGerrit Code Review <review@openstack.org>2015-01-08 23:04:51 +0000
commite252bae4c7fe7c01bef0f4c1140369fbce73a44c (patch)
tree6774e7768383156a8f29a3bba1567496b4cc699d /openstackclient/volume
parent3c57603caf5ae2f3cec5bb0d6620417fc3600a67 (diff)
parent55b85403744840e8327a6184ab3464d602e93e3f (diff)
downloadpython-openstackclient-e252bae4c7fe7c01bef0f4c1140369fbce73a44c.tar.gz
Merge "Fixup backup list output"
Diffstat (limited to 'openstackclient/volume')
-rw-r--r--openstackclient/volume/v1/backup.py54
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))