diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-02-08 21:49:21 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-02-08 21:49:21 +0000 |
| commit | 85ae58c21fc9019dfef5585accd53bdc667debde (patch) | |
| tree | c43f1078698315be9b769d7c59c69e45367d9b98 /nova/api | |
| parent | 082750832e6ad45200016845334de08ff76d2d67 (diff) | |
| parent | fdd92c4ad987407dae96ab46a36e0db407ded718 (diff) | |
| download | nova-85ae58c21fc9019dfef5585accd53bdc667debde.tar.gz nova-85ae58c21fc9019dfef5585accd53bdc667debde.tar.xz nova-85ae58c21fc9019dfef5585accd53bdc667debde.zip | |
Merge "Added ability to load specific extensions."
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) |
