diff options
| author | Vishvananda Ishaya <vishvananda@gmail.com> | 2012-08-03 18:44:56 -0700 |
|---|---|---|
| committer | Vishvananda Ishaya <vishvananda@gmail.com> | 2012-08-09 07:51:41 -0700 |
| commit | ced45de5984f1d89c238f70337cc0da2a150383f (patch) | |
| tree | 4475ec553679fbb53437cfe814099bd34a58bafc /nova/tests | |
| parent | 408d3e3dc1600471d1198e72e123c4e308ecc1f4 (diff) | |
Adds ability to inherit wsgi extensions
Needed for blueprint disable-server-extensions
It is possible to create a wsgi resource that extends another
resource by using the same controller, but any extensions that
have been applied to the original resource will have no affect.
This adds a new parameter to ResourceExtension that allows it
to inherit extensions from another resource. This is necessary
because we are moving key funcionality of the /servers resource
into extensions, and some other resources (like create-server-ext)
extend that functionality. This way we can keep the functionality
of the other extensions.
Change-Id: I21b4c2569c35d59c1f466642355564084a277aea
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/api/openstack/compute/test_extensions.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/nova/tests/api/openstack/compute/test_extensions.py b/nova/tests/api/openstack/compute/test_extensions.py index 32533936b..ebecb3ce6 100644 --- a/nova/tests/api/openstack/compute/test_extensions.py +++ b/nova/tests/api/openstack/compute/test_extensions.py @@ -109,11 +109,14 @@ class StubExtensionManager(object): self.action_ext = action_ext self.request_ext = request_ext self.controller_ext = controller_ext + self.extra_resource_ext = None def get_resources(self): resource_exts = [] if self.resource_ext: resource_exts.append(self.resource_ext) + if self.extra_resource_ext: + resource_exts.append(self.extra_resource_ext) return resource_exts def get_actions(self): @@ -511,6 +514,27 @@ class ControllerExtensionTest(ExtensionTestCase): self.assertEqual(200, response.status_int) self.assertEqual(extension_body, response.body) + def test_controller_extension_late_inherited_resource(self): + # Need a dict for the body to convert to a ResponseObject + controller = StubController(dict(foo=response_body)) + parent_ext = base_extensions.ResourceExtension('tweedles', controller) + + ext_controller = StubLateExtensionController(extension_body) + extension = StubControllerExtension() + cont_ext = base_extensions.ControllerExtension(extension, 'tweedles', + ext_controller) + + manager = StubExtensionManager(resource_ext=parent_ext, + controller_ext=cont_ext) + child_ext = base_extensions.ResourceExtension('beetles', controller, + inherits='tweedles') + manager.extra_resource_ext = child_ext + app = compute.APIRouter(manager) + request = webob.Request.blank("/fake/beetles") + response = request.get_response(app) + self.assertEqual(200, response.status_int) + self.assertEqual(extension_body, response.body) + def test_controller_action_extension_early(self): controller = StubActionController(response_body) actions = dict(action='POST') |
