diff options
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() |
