diff options
| author | Andrew Bogott <abogott@wikimedia.org> | 2012-07-01 16:37:14 -0500 |
|---|---|---|
| committer | Andrew Bogott <abogott@wikimedia.org> | 2012-07-15 16:25:26 -0500 |
| commit | a30ed72967eddf16718af717978acd80ebef2006 (patch) | |
| tree | e1bb817d7827d16a2de48e31236adf76e5e0724c /nova/api | |
| parent | 500ee77121512fd40f5c2afb885fdc45fbf4b57f (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.py | 5 | ||||
| -rw-r--r-- | nova/api/openstack/extensions.py | 7 | ||||
| -rw-r--r-- | nova/api/openstack/volume/extensions.py | 1 |
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() |
