diff options
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/openstack/compute/contrib/__init__.py | 7 | ||||
| -rw-r--r-- | nova/api/openstack/extensions.py | 17 | ||||
| -rw-r--r-- | nova/api/openstack/volume/contrib/__init__.py | 7 |
3 files changed, 25 insertions, 6 deletions
diff --git a/nova/api/openstack/compute/contrib/__init__.py b/nova/api/openstack/compute/contrib/__init__.py index 2713a82f4..eaa9557af 100644 --- a/nova/api/openstack/compute/contrib/__init__.py +++ b/nova/api/openstack/compute/contrib/__init__.py @@ -21,12 +21,19 @@ It can't be called 'extensions' because that causes namespacing problems. """ +from nova import flags from nova import log as logging from nova.api.openstack import extensions +FLAGS = flags.FLAGS LOG = logging.getLogger('nova.api.openstack.compute.contrib') def standard_extensions(ext_mgr): extensions.load_standard_extensions(ext_mgr, LOG, __path__, __package__) + + +def select_extensions(ext_mgr): + extensions.load_standard_extensions(ext_mgr, LOG, __path__, __package__, + FLAGS.osapi_compute_ext_list) diff --git a/nova/api/openstack/extensions.py b/nova/api/openstack/extensions.py index b55c05d7c..33cd0bf57 100644 --- a/nova/api/openstack/extensions.py +++ b/nova/api/openstack/extensions.py @@ -309,7 +309,7 @@ def wrap_errors(fn): return wrapped -def load_standard_extensions(ext_mgr, logger, path, package): +def load_standard_extensions(ext_mgr, logger, path, package, ext_list=None): """Registers all standard API extensions.""" # Walk through all the modules in our directory... @@ -331,13 +331,18 @@ def load_standard_extensions(ext_mgr, logger, path, package): continue # Try loading it - classname = ("%s%s.%s.%s%s" % - (package, relpkg, root, - root[0].upper(), root[1:])) + classname = "%s%s" % (root[0].upper(), root[1:]) + classpath = ("%s%s.%s.%s" % + (package, relpkg, root, classname)) + + if ext_list is not None and classname not in ext_list: + logger.debug("Skipping extension: %s" % classpath) + continue + try: - ext_mgr.load_extension(classname) + ext_mgr.load_extension(classpath) except Exception as exc: - logger.warn(_('Failed to load extension %(classname)s: ' + logger.warn(_('Failed to load extension %(classpath)s: ' '%(exc)s') % locals()) # Now, let's consider any subdirectories we may have... diff --git a/nova/api/openstack/volume/contrib/__init__.py b/nova/api/openstack/volume/contrib/__init__.py index 58c0413ab..01b585c69 100644 --- a/nova/api/openstack/volume/contrib/__init__.py +++ b/nova/api/openstack/volume/contrib/__init__.py @@ -21,12 +21,19 @@ It can't be called 'extensions' because that causes namespacing problems. """ +from nova import flags from nova import log as logging from nova.api.openstack import extensions +FLAGS = flags.FLAGS LOG = logging.getLogger('nova.api.openstack.volume.contrib') def standard_extensions(ext_mgr): extensions.load_standard_extensions(ext_mgr, LOG, __path__, __package__) + + +def select_extensions(ext_mgr): + extensions.load_standard_extensions(ext_mgr, LOG, __path__, __package__, + FLAGS.osapi_volume_ext_list) |
