diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-08-30 02:14:48 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-08-30 02:14:48 +0000 |
| commit | 5d8290e36b85c0ad3cb068937b176364635d8da0 (patch) | |
| tree | 77fec5aeb6b77d8dc4c3653794641e4ed1f40bcc /nova/api | |
| parent | d20b95ab065c1a5e079ceb2c0c1b81dcf05f2330 (diff) | |
| parent | 22addea2d26913096d75531ff5a7d10cac7d03c8 (diff) | |
Merge "Sort API extensions by alias."
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/openstack/compute/extensions.py | 2 | ||||
| -rw-r--r-- | nova/api/openstack/extensions.py | 14 | ||||
| -rw-r--r-- | nova/api/openstack/volume/extensions.py | 2 |
3 files changed, 12 insertions, 6 deletions
diff --git a/nova/api/openstack/compute/extensions.py b/nova/api/openstack/compute/extensions.py index 1a01928bc..01b728a30 100644 --- a/nova/api/openstack/compute/extensions.py +++ b/nova/api/openstack/compute/extensions.py @@ -28,11 +28,11 @@ FLAGS = flags.FLAGS class ExtensionManager(base_extensions.ExtensionManager): def __init__(self): 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.sorted_ext_list = [] self._load_extensions() diff --git a/nova/api/openstack/extensions.py b/nova/api/openstack/extensions.py index 27306514e..716dccd75 100644 --- a/nova/api/openstack/extensions.py +++ b/nova/api/openstack/extensions.py @@ -179,10 +179,16 @@ class ExtensionManager(object): example extension implementation. """ - def is_loaded(self, alias): return alias in self.extensions + def sorted_extensions(self): + if self.sorted_ext_list is None: + self.sorted_ext_list = sorted(self.extensions.iteritems()) + + for _alias, ext in self.sorted_ext_list: + yield ext + def register(self, ext): # Do nothing if the extension doesn't check out if not self._check_extension(ext): @@ -195,6 +201,7 @@ class ExtensionManager(object): raise exception.NovaException("Found duplicate extension: %s" % alias) self.extensions[alias] = ext + self.sorted_ext_list = None def get_resources(self): """Returns a list of ResourceExtension objects.""" @@ -202,8 +209,7 @@ class ExtensionManager(object): resources = [] resources.append(ResourceExtension('extensions', ExtensionsResource(self))) - - for ext in self.extensions.values(): + for ext in self.sorted_extensions(): try: resources.extend(ext.get_resources()) except AttributeError: @@ -215,7 +221,7 @@ class ExtensionManager(object): def get_controller_extensions(self): """Returns a list of ControllerExtension objects.""" controller_exts = [] - for ext in self.extensions.values(): + for ext in self.sorted_extensions(): try: controller_exts.extend(ext.get_controller_extensions()) except AttributeError: diff --git a/nova/api/openstack/volume/extensions.py b/nova/api/openstack/volume/extensions.py index ac880d6e5..b21b9d145 100644 --- a/nova/api/openstack/volume/extensions.py +++ b/nova/api/openstack/volume/extensions.py @@ -27,8 +27,8 @@ FLAGS = flags.FLAGS class ExtensionManager(base_extensions.ExtensionManager): def __init__(self): LOG.audit(_('Initializing extension manager.')) - self.cls_list = FLAGS.osapi_volume_extension self.extensions = {} self.plugins = [] + self.sorted_ext_list = [] self._load_extensions() |
