diff options
| author | Jenkins <jenkins@review.openstack.org> | 2016-02-21 04:31:50 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2016-02-21 04:31:51 +0000 |
| commit | 867bcb0db8742fd2daa5c91dfd3c164ac4178f18 (patch) | |
| tree | ab6312faf2d924879996e74bdfd5492b4f459598 /openstackclient/common/clientmanager.py | |
| parent | f4ca06cad6348b2a00d72d65c7a1c2f56e8df1d4 (diff) | |
| parent | 41e1bd0be64e15a5e0c12b45bdf3dcde5fabf244 (diff) | |
| download | python-openstackclient-867bcb0db8742fd2daa5c91dfd3c164ac4178f18.tar.gz | |
Merge "Support unscoped token request"
Diffstat (limited to 'openstackclient/common/clientmanager.py')
| -rw-r--r-- | openstackclient/common/clientmanager.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/openstackclient/common/clientmanager.py b/openstackclient/common/clientmanager.py index 5696b9e1..78a0ae6e 100644 --- a/openstackclient/common/clientmanager.py +++ b/openstackclient/common/clientmanager.py @@ -113,19 +113,35 @@ class ClientManager(object): root_logger = logging.getLogger('') LOG.setLevel(root_logger.getEffectiveLevel()) - def setup_auth(self): + # NOTE(gyee): use this flag to indicate whether auth setup has already + # been completed. If so, do not perform auth setup again. The reason + # we need this flag is that we want to be able to perform auth setup + # outside of auth_ref as auth_ref itself is a property. We can not + # retrofit auth_ref to optionally skip scope check. Some operations + # do not require a scoped token. In those cases, we call setup_auth + # prior to dereferrencing auth_ref. + self._auth_setup_completed = False + + def setup_auth(self, required_scope=True): """Set up authentication + :param required_scope: indicate whether a scoped token is required + This is deferred until authentication is actually attempted because it gets in the way of things that do not require auth. """ + if self._auth_setup_completed: + return + # If no auth type is named by the user, select one based on # the supplied options self.auth_plugin_name = auth.select_auth_plugin(self._cli_options) # Basic option checking to avoid unhelpful error messages - auth.check_valid_auth_options(self._cli_options, self.auth_plugin_name) + auth.check_valid_auth_options(self._cli_options, + self.auth_plugin_name, + required_scope=required_scope) # Horrible hack alert...must handle prompt for null password if # password auth is requested. @@ -180,6 +196,8 @@ class ClientManager(object): user_agent=USER_AGENT, ) + self._auth_setup_completed = True + return @property |
