diff options
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/openstack/__init__.py | 4 | ||||
| -rw-r--r-- | nova/api/openstack/compute/__init__.py | 4 | ||||
| -rw-r--r-- | nova/api/openstack/compute/contrib/config_drive.py | 2 | ||||
| -rw-r--r-- | nova/api/openstack/compute/contrib/createserverext.py | 2 | ||||
| -rw-r--r-- | nova/api/openstack/compute/contrib/keypairs.py | 2 | ||||
| -rw-r--r-- | nova/api/openstack/compute/contrib/volumes.py | 4 | ||||
| -rw-r--r-- | nova/api/openstack/compute/servers.py | 7 | ||||
| -rw-r--r-- | nova/api/openstack/extensions.py | 4 | ||||
| -rw-r--r-- | nova/api/openstack/volume/__init__.py | 2 |
9 files changed, 18 insertions, 13 deletions
diff --git a/nova/api/openstack/__init__.py b/nova/api/openstack/__init__.py index a5274e03b..e84353df9 100644 --- a/nova/api/openstack/__init__.py +++ b/nova/api/openstack/__init__.py @@ -122,7 +122,7 @@ class APIRouter(base_wsgi.Router): mapper = ProjectMapper() self.resources = {} - self._setup_routes(mapper) + self._setup_routes(mapper, ext_mgr) self._setup_ext_routes(mapper, ext_mgr) self._setup_extensions(ext_mgr) super(APIRouter, self).__init__(mapper) @@ -166,5 +166,5 @@ class APIRouter(base_wsgi.Router): resource.register_actions(controller) resource.register_extensions(controller) - def _setup_routes(self, mapper): + def _setup_routes(self, mapper, ext_mgr): raise NotImplementedError diff --git a/nova/api/openstack/compute/__init__.py b/nova/api/openstack/compute/__init__.py index 081290b10..70ec80dc2 100644 --- a/nova/api/openstack/compute/__init__.py +++ b/nova/api/openstack/compute/__init__.py @@ -53,7 +53,7 @@ class APIRouter(nova.api.openstack.APIRouter): """ ExtensionManager = extensions.ExtensionManager - def _setup_routes(self, mapper): + def _setup_routes(self, mapper, ext_mgr): self.resources['versions'] = versions.create_resource() mapper.connect("versions", "/", controller=self.resources['versions'], @@ -67,7 +67,7 @@ class APIRouter(nova.api.openstack.APIRouter): parent_resource=dict(member_name='server', collection_name='servers')) - self.resources['servers'] = servers.create_resource() + self.resources['servers'] = servers.create_resource(ext_mgr) mapper.resource("server", "servers", controller=self.resources['servers'], collection={'detail': 'GET'}, diff --git a/nova/api/openstack/compute/contrib/config_drive.py b/nova/api/openstack/compute/contrib/config_drive.py index 3ec2c3db4..779aad539 100644 --- a/nova/api/openstack/compute/contrib/config_drive.py +++ b/nova/api/openstack/compute/contrib/config_drive.py @@ -82,6 +82,6 @@ class Config_drive(extensions.ExtensionDescriptor): updated = "2012-07-16T00:00:00+00:00" def get_controller_extensions(self): - controller = Controller() + controller = Controller(self.ext_mgr) extension = extensions.ControllerExtension(self, 'servers', controller) return [extension] diff --git a/nova/api/openstack/compute/contrib/createserverext.py b/nova/api/openstack/compute/contrib/createserverext.py index 08407aaca..ebb24e559 100644 --- a/nova/api/openstack/compute/contrib/createserverext.py +++ b/nova/api/openstack/compute/contrib/createserverext.py @@ -55,7 +55,7 @@ class Createserverext(extensions.ExtensionDescriptor): def get_resources(self): resources = [] - controller = Controller() + controller = Controller(self.ext_mgr) res = extensions.ResourceExtension('os-create-server-ext', controller=controller) diff --git a/nova/api/openstack/compute/contrib/keypairs.py b/nova/api/openstack/compute/contrib/keypairs.py index c3f9c69ef..db503ffdd 100644 --- a/nova/api/openstack/compute/contrib/keypairs.py +++ b/nova/api/openstack/compute/contrib/keypairs.py @@ -190,6 +190,6 @@ class Keypairs(extensions.ExtensionDescriptor): return resources def get_controller_extensions(self): - controller = Controller() + controller = Controller(self.ext_mgr) extension = extensions.ControllerExtension(self, 'servers', controller) return [extension] diff --git a/nova/api/openstack/compute/contrib/volumes.py b/nova/api/openstack/compute/contrib/volumes.py index 085f8d7c5..1f231d600 100644 --- a/nova/api/openstack/compute/contrib/volumes.py +++ b/nova/api/openstack/compute/contrib/volumes.py @@ -597,8 +597,8 @@ class Volumes(extensions.ExtensionDescriptor): collection_name='servers')) resources.append(res) - res = extensions.ResourceExtension('os-volumes_boot', - BootFromVolumeController()) + controller = BootFromVolumeController(self.ext_mgr) + res = extensions.ResourceExtension('os-volumes_boot', controller) resources.append(res) res = extensions.ResourceExtension('os-snapshots', diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py index 0b37b5c57..e71f2bcea 100644 --- a/nova/api/openstack/compute/servers.py +++ b/nova/api/openstack/compute/servers.py @@ -360,9 +360,10 @@ class Controller(wsgi.Controller): # Convenience return return robj - def __init__(self, **kwargs): + def __init__(self, ext_mgr=None, **kwargs): super(Controller, self).__init__(**kwargs) self.compute_api = compute.API() + self.ext_mgr = ext_mgr @wsgi.serializers(xml=MinimalServersTemplate) def index(self, req): @@ -1160,8 +1161,8 @@ class Controller(wsgi.Controller): 'changes-since') -def create_resource(): - return wsgi.Resource(Controller()) +def create_resource(ext_mgr): + return wsgi.Resource(Controller(ext_mgr)) def remove_invalid_options(context, search_options, allowed_search_options): diff --git a/nova/api/openstack/extensions.py b/nova/api/openstack/extensions.py index 5d5c750a2..da2157ad8 100644 --- a/nova/api/openstack/extensions.py +++ b/nova/api/openstack/extensions.py @@ -63,6 +63,7 @@ class ExtensionDescriptor(object): """Register extension with the extension manager.""" ext_mgr.register(self) + self.ext_mgr = ext_mgr def get_resources(self): """List of extensions.ResourceExtension extension objects. @@ -179,6 +180,9 @@ class ExtensionManager(object): """ + def is_loaded(self, alias): + return alias in self.extensions + def register(self, ext): # Do nothing if the extension doesn't check out if not self._check_extension(ext): diff --git a/nova/api/openstack/volume/__init__.py b/nova/api/openstack/volume/__init__.py index 3e6f731e1..092ce6c5d 100644 --- a/nova/api/openstack/volume/__init__.py +++ b/nova/api/openstack/volume/__init__.py @@ -39,7 +39,7 @@ class APIRouter(nova.api.openstack.APIRouter): """ ExtensionManager = extensions.ExtensionManager - def _setup_routes(self, mapper): + def _setup_routes(self, mapper, ext_mgr): self.resources['versions'] = versions.create_resource() mapper.connect("versions", "/", controller=self.resources['versions'], |
