From 0a2e729e2939c905e0cb8dbfafa1e4a248606468 Mon Sep 17 00:00:00 2001 From: Jamie Lennox Date: Thu, 21 Aug 2014 18:54:06 +1000 Subject: [PATCH] Distinguish between name not provided and incorrect When loading from config we need a way to determine if a plugin name was specified incorrectly or was not specified at all. We need this to determine if we need to load a fallback plugin. This is much more in line with how CLI loading works and how it should have worked initially. Change-Id: I5547b6e169abc4f1850ff205a8f054a617785c2c Closes-Bug: #1359618 --- keystoneclient/auth/conf.py | 5 ++--- keystoneclient/tests/auth/test_conf.py | 6 ++---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/keystoneclient/auth/conf.py b/keystoneclient/auth/conf.py index c3d13dbc8..ca1449982 100644 --- a/keystoneclient/auth/conf.py +++ b/keystoneclient/auth/conf.py @@ -13,7 +13,6 @@ from oslo.config import cfg from keystoneclient.auth import base -from keystoneclient import exceptions _AUTH_PLUGIN_OPT = cfg.StrOpt('auth_plugin', help='Name of the plugin to load') @@ -89,7 +88,7 @@ def load_from_conf_options(conf, group, **kwargs): :param conf: An oslo.config conf object. :param string group: The group name that options should be read from. - :returns plugin: An authentication Plugin. + :returns plugin: An authentication Plugin or None if a name is not provided :raises exceptions.NoMatchingPlugin: if a plugin cannot be created. """ @@ -101,7 +100,7 @@ def load_from_conf_options(conf, group, **kwargs): name = conf[group].auth_plugin if not name: - raise exceptions.NoMatchingPlugin('No plugin name provided for config') + return None plugin_class = base.get_plugin_class(name) plugin_class.register_conf_options(conf, group) diff --git a/keystoneclient/tests/auth/test_conf.py b/keystoneclient/tests/auth/test_conf.py index 24b20196f..342333f35 100644 --- a/keystoneclient/tests/auth/test_conf.py +++ b/keystoneclient/tests/auth/test_conf.py @@ -101,10 +101,8 @@ class ConfTests(utils.TestCase): self.GROUP) def test_loading_with_no_data(self): - self.assertRaises(exceptions.NoMatchingPlugin, - conf.load_from_conf_options, - self.conf_fixture.conf, - self.GROUP) + self.assertIsNone(conf.load_from_conf_options(self.conf_fixture.conf, + self.GROUP)) @mock.patch('stevedore.DriverManager') def test_other_params(self, m):