diff options
| author | Steve Martinelli <stevemar@ca.ibm.com> | 2014-07-03 18:25:42 -0400 |
|---|---|---|
| committer | Steve Martinelli <stevemar@ca.ibm.com> | 2014-07-03 23:53:57 -0400 |
| commit | 270c7fe96727cedf81e7f4fe6361672c512fc150 (patch) | |
| tree | 62e7b2b37ae9044d56faf4d430e9ded7b3e317c5 /openstackclient | |
| parent | e43c0f2b9b8b1e75959179646c212fdaf3d00265 (diff) | |
| download | python-openstackclient-270c7fe96727cedf81e7f4fe6361672c512fc150.tar.gz | |
Add support to list compute extensions
Since novaclient has support to list extensions, we should add
some of the logic to our list extensions command.
Closes-Bug: #1337684
Change-Id: I3074225780142df265a34add03e60c0f7c64c711
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/common/extension.py | 28 | ||||
| -rw-r--r-- | openstackclient/compute/client.py | 7 |
2 files changed, 24 insertions, 11 deletions
diff --git a/openstackclient/common/extension.py b/openstackclient/common/extension.py index a8b1a6b0..a3f94c09 100644 --- a/openstackclient/common/extension.py +++ b/openstackclient/common/extension.py @@ -19,16 +19,14 @@ import logging from cliff import lister -from openstackclient.common import exceptions as exc from openstackclient.common import utils class ListExtension(lister.Lister): """List extension command""" - # TODO(mfisch): add support for volume and compute - # when the underlying APIs support it. Add support - # for network when it's added to openstackclient. + # TODO(mfisch): add support for volume and network + # when the underlying APIs support it. log = logging.getLogger(__name__ + '.ListExtension') @@ -44,6 +42,11 @@ class ListExtension(lister.Lister): action='store_true', default=False, help='List extensions for the Identity API') + parser.add_argument( + '--compute', + action='store_true', + default=False, + help='List extensions for the Compute API') return parser def take_action(self, parsed_args): @@ -59,17 +62,24 @@ 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 is supported - show_all = (not parsed_args.identity) + # for now, only identity and compute are supported. + show_all = (not parsed_args.identity and not parsed_args.compute) if parsed_args.identity or show_all: identity_client = self.app.client_manager.identity try: data += identity_client.extensions.list() except Exception: - raise exc.CommandError( - "Extensions list not supported by" - " identity API") + message = "Extensions list not supported by Identity API" + self.log.warning(message) + + if parsed_args.compute or show_all: + compute_client = self.app.client_manager.compute + try: + data += compute_client.list_extensions.show_all() + except Exception: + message = "Extensions list not supported by Compute API" + self.log.warning(message) return (columns, (utils.get_item_properties( diff --git a/openstackclient/compute/client.py b/openstackclient/compute/client.py index 3dacee88..c8712809 100644 --- a/openstackclient/compute/client.py +++ b/openstackclient/compute/client.py @@ -15,6 +15,9 @@ import logging +from novaclient import extension +from novaclient.v1_1.contrib import list_extensions + from openstackclient.common import utils LOG = logging.getLogger(__name__) @@ -39,6 +42,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 = compute_client( username=instance._username, api_key=instance._password, @@ -49,8 +53,7 @@ def make_client(instance): region_name=instance._region_name, # FIXME(dhellmann): get endpoint_type from option? endpoint_type='publicURL', - # FIXME(dhellmann): add extension discovery - extensions=[], + extensions=extensions, service_type=API_NAME, # FIXME(dhellmann): what is service_name? service_name='', |
