return app
-class PluginAwareExtensionMiddleware(ExtensionMiddleware):
-
- def __init__(self, application, config_params, ext_mgr=None,
- plugin_options=None):
- plugin_aware_extension_mgr = PluginAwareExtensionManager(
- config_params.get('api_extensions_path', ''),
- plugin_options)
- ext_mgr = (ext_mgr or plugin_aware_extension_mgr)
- super(PluginAwareExtensionMiddleware, self).__init__(
- application, config_params, ext_mgr)
+def plugin_aware_extension_middleware_factory(global_config, **local_config):
+ """Paste factory."""
+ def _factory(app):
+ extensions_path = global_config.get('api_extensions_path', '')
+ ext_mgr = PluginAwareExtensionManager(extensions_path,
+ QuantumManager().get_plugin())
+ return ExtensionMiddleware(app, global_config, ext_mgr=ext_mgr)
+ return _factory
class ExtensionManager(object):
class PluginAwareExtensionManager(ExtensionManager):
- def __init__(self, path, plugin_options=None):
- self.plugin = QuantumManager(plugin_options).get_plugin()
+ def __init__(self, path, plugin):
+ self.plugin = plugin
super(PluginAwareExtensionManager, self).__init__(path)
def _check_extension(self, extension):
if(not hasattr(extension, "get_plugin_interface") or
extension.get_plugin_interface() is None):
return True
- return isinstance(self.plugin, extension.get_plugin_interface())
+ return isinstance(self.plugin,
+ extension.get_plugin_interface())
class RequestExtension(object):
from quantum.common import config
from quantum.common.extensions import (ExtensionManager,
PluginAwareExtensionManager,
- PluginAwareExtensionMiddleware)
+ ExtensionMiddleware)
test_conf_file = os.path.join(os.path.dirname(__file__), os.pardir,
os.pardir, 'etc', 'quantum.conf.test')
class PluginAwareExtensionManagerTest(unittest.TestCase):
- def setUp(self):
- self.ext_mgr = PluginAwareExtensionManager('', plugin_options)
-
def test_unsupported_extensions_are_not_loaded(self):
- self.ext_mgr.plugin = StubPlugin(supported_extensions=["e1", "e3"])
+ stub_plugin = StubPlugin(supported_extensions=["e1", "e3"])
+ ext_mgr = PluginAwareExtensionManager('', stub_plugin)
- self.ext_mgr.add_extension(StubExtension("e1"))
- self.ext_mgr.add_extension(StubExtension("e2"))
- self.ext_mgr.add_extension(StubExtension("e3"))
+ ext_mgr.add_extension(StubExtension("e1"))
+ ext_mgr.add_extension(StubExtension("e2"))
+ ext_mgr.add_extension(StubExtension("e3"))
- self.assertTrue("e1" in self.ext_mgr.extensions)
- self.assertFalse("e2" in self.ext_mgr.extensions)
- self.assertTrue("e3" in self.ext_mgr.extensions)
+ self.assertTrue("e1" in ext_mgr.extensions)
+ self.assertFalse("e2" in ext_mgr.extensions)
+ self.assertTrue("e3" in ext_mgr.extensions)
def test_extensions_are_not_loaded_for_plugins_unaware_of_extensions(self):
class ExtensionUnawarePlugin(object):
"""
pass
- self.ext_mgr.plugin = ExtensionUnawarePlugin()
- self.ext_mgr.add_extension(StubExtension("e1"))
+ ext_mgr = PluginAwareExtensionManager('', ExtensionUnawarePlugin())
+ ext_mgr.add_extension(StubExtension("e1"))
- self.assertFalse("e1" in self.ext_mgr.extensions)
+ self.assertFalse("e1" in ext_mgr.extensions)
def test_extensions_not_loaded_for_plugin_without_expected_interface(self):
"""
supported_extension_aliases = ["supported_extension"]
- self.ext_mgr.plugin = PluginWithoutExpectedInterface()
- self.ext_mgr.add_extension(
+ ext_mgr = PluginAwareExtensionManager('',
+ PluginWithoutExpectedInterface())
+ ext_mgr.add_extension(
ExtensionExpectingPluginInterface("supported_extension"))
- self.assertFalse("e1" in self.ext_mgr.extensions)
+ self.assertFalse("e1" in ext_mgr.extensions)
def test_extensions_are_loaded_for_plugin_with_expected_interface(self):
def get_foo(self, bar=None):
pass
-
- self.ext_mgr.plugin = PluginWithExpectedInterface()
- self.ext_mgr.add_extension(
+ ext_mgr = PluginAwareExtensionManager('',
+ PluginWithExpectedInterface())
+ ext_mgr.add_extension(
ExtensionExpectingPluginInterface("supported_extension"))
- self.assertTrue("supported_extension" in self.ext_mgr.extensions)
+ self.assertTrue("supported_extension" in ext_mgr.extensions)
def test_extensions_expecting_quantum_plugin_interface_are_loaded(self):
class ExtensionForQuamtumPluginInterface(StubExtension):
This will work with any plugin implementing QuantumPluginBase
"""
pass
+ stub_plugin = StubPlugin(supported_extensions=["e1"])
+ ext_mgr = PluginAwareExtensionManager('', stub_plugin)
+ ext_mgr.add_extension(ExtensionForQuamtumPluginInterface("e1"))
- self.ext_mgr.plugin = StubPlugin(supported_extensions=["e1"])
- self.ext_mgr.add_extension(ExtensionForQuamtumPluginInterface("e1"))
-
- self.assertTrue("e1" in self.ext_mgr.extensions)
+ self.assertTrue("e1" in ext_mgr.extensions)
def test_extensions_without_need_for__plugin_interface_are_loaded(self):
class ExtensionWithNoNeedForPluginInterface(StubExtension):
def get_plugin_interface(self):
return None
- self.ext_mgr.plugin = StubPlugin(supported_extensions=["e1"])
- self.ext_mgr.add_extension(ExtensionWithNoNeedForPluginInterface("e1"))
+ stub_plugin = StubPlugin(supported_extensions=["e1"])
+ ext_mgr = PluginAwareExtensionManager('', stub_plugin)
+ ext_mgr.add_extension(ExtensionWithNoNeedForPluginInterface("e1"))
- self.assertTrue("e1" in self.ext_mgr.extensions)
+ self.assertTrue("e1" in ext_mgr.extensions)
class ExtensionControllerTest(unittest.TestCase):
"http://www.fox.in.socks/api/ext/pie/v1.0")
-class TestExtensionMiddlewareFactory(unittest.TestCase):
-
- def test_app_configured_with_extensions_as_filter(self):
- conf, quantum_app = config.load_paste_app('extensions_app_with_filter',
- {"config_file": test_conf_file}, None)
-
- response = TestApp(quantum_app).get("/extensions")
- self.assertEqual(response.status_int, 200)
-
-
def app_factory(global_conf, **local_conf):
conf = global_conf.copy()
conf.update(local_conf)
def setup_extensions_middleware(extension_manager=None):
options = {'config_file': test_conf_file}
conf, app = config.load_paste_app('extensions_test_app', options, None)
- return PluginAwareExtensionMiddleware(app, conf, ext_mgr=extension_manager,
- plugin_options=plugin_options)
+ return ExtensionMiddleware(app, conf, ext_mgr=extension_manager)
def setup_extensions_test_app(extension_manager=None):