Merge "Add support to list volume extensions"

This commit is contained in:
Jenkins 2014-07-09 06:59:39 +00:00 committed by Gerrit Code Review
commit e8f058775e
2 changed files with 21 additions and 2 deletions

View File

@ -47,6 +47,11 @@ class ListExtension(lister.Lister):
action='store_true',
default=False,
help='List extensions for the Compute API')
parser.add_argument(
'--volume',
action='store_true',
default=False,
help='List extensions for the Volume API')
return parser
def take_action(self, parsed_args):
@ -63,7 +68,8 @@ class ListExtension(lister.Lister):
# by default we want to show everything, unless the
# user specifies one or more of the APIs to show
# for now, only identity and compute are supported.
show_all = (not parsed_args.identity and not parsed_args.compute)
show_all = (not parsed_args.identity and not parsed_args.compute
and not parsed_args.volume)
if parsed_args.identity or show_all:
identity_client = self.app.client_manager.identity
@ -81,6 +87,14 @@ class ListExtension(lister.Lister):
message = "Extensions list not supported by Compute API"
self.log.warning(message)
if parsed_args.volume or show_all:
volume_client = self.app.client_manager.volume
try:
data += volume_client.list_extensions.show_all()
except Exception:
message = "Extensions list not supported by Volume API"
self.log.warning(message)
return (columns,
(utils.get_item_properties(
s, columns,

View File

@ -15,8 +15,11 @@
import logging
from cinderclient import extension
from cinderclient.v1.contrib import list_extensions
from cinderclient.v1 import volume_snapshots
from cinderclient.v1 import volumes
from openstackclient.common import utils
# Monkey patch for v1 cinderclient
@ -45,6 +48,7 @@ def make_client(instance):
# Set client http_log_debug to True if verbosity level is high enough
http_log_debug = utils.get_effective_log_level() <= logging.DEBUG
extensions = [extension.Extension('list_extensions', list_extensions)]
client = volume_client(
username=instance._username,
api_key=instance._password,
@ -53,7 +57,8 @@ def make_client(instance):
cacert=instance._cacert,
insecure=instance._insecure,
region_name=instance._region_name,
http_log_debug=http_log_debug
extensions=extensions,
http_log_debug=http_log_debug,
)
# Populate the Cinder client to skip another auth query to Identity