diff options
| author | Jenkins <jenkins@review.openstack.org> | 2016-06-22 15:51:02 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2016-06-22 15:51:02 +0000 |
| commit | fd03f5250a61334938d700b568e6f777f92d572c (patch) | |
| tree | d685441f565136b840e812ac8012013f1252d943 /openstackclient/api | |
| parent | 775b1acccd9c2ea78b4b46a2dac9e812b3b1eff6 (diff) | |
| parent | cefe715031cc4b1b79a8a68fdb2b93d94fb128f0 (diff) | |
| download | python-openstackclient-fd03f5250a61334938d700b568e6f777f92d572c.tar.gz | |
Merge "Fix token/endpoint auth plugin"
Diffstat (limited to 'openstackclient/api')
| -rw-r--r-- | openstackclient/api/auth_plugin.py | 55 |
1 files changed, 30 insertions, 25 deletions
diff --git a/openstackclient/api/auth_plugin.py b/openstackclient/api/auth_plugin.py index 4434bc8f..56dc4de5 100644 --- a/openstackclient/api/auth_plugin.py +++ b/openstackclient/api/auth_plugin.py @@ -15,50 +15,55 @@ import logging -from oslo_config import cfg -from six.moves.urllib import parse as urlparse - -from keystoneauth1.loading._plugins import admin_token as token_endpoint +from keystoneauth1 import loading from keystoneauth1.loading._plugins.identity import generic as ksa_password +from keystoneauth1 import token_endpoint +from six.moves.urllib import parse as urlparse from openstackclient.i18n import _ LOG = logging.getLogger(__name__) -class TokenEndpoint(token_endpoint.AdminToken): +class TokenEndpoint(loading.BaseLoader): """Auth plugin to handle traditional token/endpoint usage - Implements the methods required to handle token authentication - with a user-specified token and service endpoint; no Identity calls - are made for re-scoping, service catalog lookups or the like. - - The purpose of this plugin is to get rid of the special-case paths - in the code to handle this authentication format. Its primary use - is for bootstrapping the Keystone database. + Keystoneauth contains a Token plugin class that now correctly + handles the token/endpoint auth compatible with OSC. However, + the AdminToken loader deprecates the 'url' argument, which breaks + OSC compatibility, so make one that works. """ + @property + def plugin_class(self): + return token_endpoint.Token + def load_from_options(self, url, token, **kwargs): """A plugin for static authentication with an existing token :param string url: Service endpoint :param string token: Existing token """ - return super(TokenEndpoint, self).load_from_options(endpoint=url, - token=token) - def get_options(self): - options = super(TokenEndpoint, self).get_options() - - options.extend([ - # Maintain name 'url' for compatibility - cfg.StrOpt('url', - help=_('Specific service endpoint to use')), - cfg.StrOpt('token', - secret=True, - help=_('Authentication token to use')), - ]) + return super(TokenEndpoint, self).load_from_options( + endpoint=url, + token=token, + ) + def get_options(self): + """Return the legacy options""" + + options = [ + loading.Opt( + 'url', + help=_('Specific service endpoint to use'), + ), + loading.Opt( + 'token', + secret=True, + help=_('Authentication token to use'), + ), + ] return options |
