From bf582a2d56e6eaaaf20f8b399dd6bdd7789e056f Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Thu, 10 May 2012 15:20:40 -0400 Subject: look at the command the user is going to run before trying to authenticate them Change-Id: I4edc6a0f1e16be4cd80fe01f62869094b50ef120 --- openstackclient/shell.py | 46 +++++++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 17 deletions(-) (limited to 'openstackclient/shell.py') diff --git a/openstackclient/shell.py b/openstackclient/shell.py index 986cdcdb..8ffe81fd 100644 --- a/openstackclient/shell.py +++ b/openstackclient/shell.py @@ -124,24 +124,10 @@ class OpenStackShell(App): return parser - def initialize_app(self): - """Global app init bits: - - * set up API versions - * validate authentication info - * authenticate against Identity if requested + def authenticate_user(self): + """Make sure the user has provided all of the authentication + info we need. """ - - super(OpenStackShell, self).initialize_app() - - # 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, - 'image': self.options.os_image_api_version, - } - self.log.debug('validating authentication options') if self.options.os_token or self.options.os_url: # Token flow auth takes priority @@ -190,6 +176,32 @@ class OpenStackShell(App): compute_api_version=self.options.os_compute_api_version, image_api_version=self.options.os_image_api_version, ) + return + + def initialize_app(self, argv): + """Global app init bits: + + * set up API versions + * validate authentication info + * authenticate against Identity if requested + """ + + 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, + 'image': self.options.os_image_api_version, + } + + # If the user is not asking for help, make sure they + # have given us auth. + cmd_info = self.command_manager.find_command(argv) + cmd_factory, cmd_name, sub_argv = cmd_info + if cmd_name != 'help': + self.authenticate_user() self.log.debug("API: Identity=%s Compute=%s Image=%s" % ( self.api_version['identity'], -- cgit v1.2.1