summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/__init__.py4
-rw-r--r--nova/api/openstack/compute/__init__.py4
-rw-r--r--nova/api/openstack/compute/contrib/config_drive.py2
-rw-r--r--nova/api/openstack/compute/contrib/createserverext.py2
-rw-r--r--nova/api/openstack/compute/contrib/keypairs.py2
-rw-r--r--nova/api/openstack/compute/contrib/volumes.py4
-rw-r--r--nova/api/openstack/compute/servers.py7
-rw-r--r--nova/api/openstack/extensions.py4
-rw-r--r--nova/api/openstack/volume/__init__.py2
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'],