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
This commit is contained in:
Jamie Lennox
2014-08-21 18:54:06 +10:00
parent 5a0913383e
commit 0a2e729e29
2 changed files with 4 additions and 7 deletions

View File

@@ -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)

View File

@@ -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):