summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/compute/extensions.py5
-rw-r--r--nova/api/openstack/extensions.py7
-rw-r--r--nova/api/openstack/volume/extensions.py1
3 files changed, 11 insertions, 2 deletions
diff --git a/nova/api/openstack/compute/extensions.py b/nova/api/openstack/compute/extensions.py
index cb5e89deb..1a01928bc 100644
--- a/nova/api/openstack/compute/extensions.py
+++ b/nova/api/openstack/compute/extensions.py
@@ -18,6 +18,7 @@
from nova.api.openstack import extensions as base_extensions
from nova import flags
from nova.openstack.common import log as logging
+from nova.openstack.common.plugin import pluginmanager
LOG = logging.getLogger(__name__)
@@ -29,5 +30,9 @@ class ExtensionManager(base_extensions.ExtensionManager):
LOG.audit(_('Initializing extension manager.'))
self.cls_list = FLAGS.osapi_compute_extension
+ self.PluginManager = pluginmanager.PluginManager('nova',
+ 'compute-extensions')
+ self.PluginManager.load_plugins()
+ self.cls_list.append(self.PluginManager.plugin_extension_factory)
self.extensions = {}
self._load_extensions()
diff --git a/nova/api/openstack/extensions.py b/nova/api/openstack/extensions.py
index be7304e6e..5d5c750a2 100644
--- a/nova/api/openstack/extensions.py
+++ b/nova/api/openstack/extensions.py
@@ -246,8 +246,11 @@ class ExtensionManager(object):
LOG.debug(_("Loading extension %s"), ext_factory)
- # Load the factory
- factory = importutils.import_class(ext_factory)
+ if isinstance(ext_factory, basestring):
+ # Load the factory
+ factory = importutils.import_class(ext_factory)
+ else:
+ factory = ext_factory
# Call it
LOG.debug(_("Calling extension factory %s"), ext_factory)
diff --git a/nova/api/openstack/volume/extensions.py b/nova/api/openstack/volume/extensions.py
index cf400bd9a..ac880d6e5 100644
--- a/nova/api/openstack/volume/extensions.py
+++ b/nova/api/openstack/volume/extensions.py
@@ -30,4 +30,5 @@ class ExtensionManager(base_extensions.ExtensionManager):
self.cls_list = FLAGS.osapi_volume_extension
self.extensions = {}
+ self.plugins = []
self._load_extensions()