summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorAndrew Bogott <abogott@wikimedia.org>2012-07-01 16:37:14 -0500
committerAndrew Bogott <abogott@wikimedia.org>2012-07-15 16:25:26 -0500
commita30ed72967eddf16718af717978acd80ebef2006 (patch)
treee1bb817d7827d16a2de48e31236adf76e5e0724c /nova/api
parent500ee77121512fd40f5c2afb885fdc45fbf4b57f (diff)
Add the plugin framework from common; use and test.
For blueprint novaplugins. Change-Id: Id4a5ae3ebb91f941956e2f73ecfd9ea1d290a235
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()