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:
		@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user