From 4fd5dd3b1afca700073affe313732c1d0540215e Mon Sep 17 00:00:00 2001 From: Dean Troyer <dtroyer@gmail.com> Date: Fri, 8 Mar 2013 15:39:48 -0600 Subject: [PATCH] Add a simple extension hook This enables stand-alone modules to hook in to the command-line handler in a dedicated API namespace. These extensions have access to the existing clients via the client manager but no way to add another client to the manager is provided.. blueprint client-extensions Change-Id: I4b2eaa780d8ba881db23d950d09b8702e9e314ef --- openstackclient/shell.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/openstackclient/shell.py b/openstackclient/shell.py index 29f9f70a7d..eef2d0612a 100644 --- a/openstackclient/shell.py +++ b/openstackclient/shell.py @@ -298,7 +298,6 @@ class OpenStackShell(App): super(OpenStackShell, self).initialize_app(argv) # stash selected API versions for later - # TODO(dtroyer): how do extenstions add their version requirements? self.api_version = { 'compute': self.options.os_compute_api_version, 'identity': self.options.os_identity_api_version, @@ -312,6 +311,19 @@ class OpenStackShell(App): self.command_manager.add_command_group( 'openstack.' + api + version) + # This is the naive extension implementation referred to in + # blueprint 'client-extensions' + # Extension modules can register their commands in an + # 'openstack.extension' entry point group: + # entry_points={ + # 'openstack.extension': [ + # 'list_repo=qaz.github.repo:ListRepo', + # 'show_repo=qaz.github.repo:ShowRepo', + # ], + # } + self.command_manager.add_command_group( + 'openstack.extension') + # Handle deferred help and exit if self.options.deferred_help: self.DeferredHelpAction(self.parser, self.parser, None, None)