diff --git a/keystoneclient/auth/base.py b/keystoneclient/auth/base.py index 9da90b74c..5b622e797 100644 --- a/keystoneclient/auth/base.py +++ b/keystoneclient/auth/base.py @@ -17,7 +17,6 @@ import six import stevedore from keystoneclient import exceptions -from keystoneclient.i18n import _ # NOTE(jamielennox): The AUTH_INTERFACE is a special value that can be @@ -44,8 +43,7 @@ def get_plugin_class(name): name=name, invoke_on_load=False) except RuntimeError: - msg = _('The plugin %s could not be found') % name - raise exceptions.NoMatchingPlugin(msg) + raise exceptions.NoMatchingPlugin(name) return mgr.driver diff --git a/keystoneclient/exceptions.py b/keystoneclient/exceptions.py index 241d27b30..a76aa3287 100644 --- a/keystoneclient/exceptions.py +++ b/keystoneclient/exceptions.py @@ -81,8 +81,19 @@ class MissingAuthPlugin(ClientException): class NoMatchingPlugin(ClientException): """There were no auth plugins that could be created from the parameters provided. + + :param str name: The name of the plugin that was attempted to load. + + .. py:attribute:: name + + The name of the plugin that was attempted to load. """ + def __init__(self, name): + self.name = name + msg = _('The plugin %s could not be found') % name + super(NoMatchingPlugin, self).__init__(msg) + class InvalidResponse(ClientException): """The response from the server is not valid for this request.""" diff --git a/keystoneclient/tests/auth/test_conf.py b/keystoneclient/tests/auth/test_conf.py index 342333f35..4945b3fc6 100644 --- a/keystoneclient/tests/auth/test_conf.py +++ b/keystoneclient/tests/auth/test_conf.py @@ -92,13 +92,16 @@ class ConfTests(utils.TestCase): self.assertEqual(project_domain_name, a.project_domain_name) def test_loading_invalid_plugin(self): - self.conf_fixture.config(auth_plugin=uuid.uuid4().hex, + auth_plugin = uuid.uuid4().hex + self.conf_fixture.config(auth_plugin=auth_plugin, group=self.GROUP) - self.assertRaises(exceptions.NoMatchingPlugin, - conf.load_from_conf_options, - self.conf_fixture.conf, - self.GROUP) + e = self.assertRaises(exceptions.NoMatchingPlugin, + conf.load_from_conf_options, + self.conf_fixture.conf, + self.GROUP) + + self.assertEqual(auth_plugin, e.name) def test_loading_with_no_data(self): self.assertIsNone(conf.load_from_conf_options(self.conf_fixture.conf,