summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorMelanie Witt <melwitt@yahoo-inc.com>2013-05-17 02:13:22 +0000
committerMelanie Witt <melwitt@yahoo-inc.com>2013-05-24 20:03:05 +0000
commitacaf9f83abe37a41a687936bb03f20cc183e5aaa (patch)
tree6d81dedf0c61aeaee836cfe747bbb0100ee0e313 /nova/api
parentf56d3e13eba566f6c262a96e1a967b596d54b0e4 (diff)
downloadnova-acaf9f83abe37a41a687936bb03f20cc183e5aaa.tar.gz
nova-acaf9f83abe37a41a687936bb03f20cc183e5aaa.tar.xz
nova-acaf9f83abe37a41a687936bb03f20cc183e5aaa.zip
removes project_id/tenant_id from v3 api urls
Adds a new APIMapper for V3 that doesn't prefix every url with the project_id/tenant_id. Partially implements blueprint v3-api-remove-project-id. Change-Id: I547a94e2db0dd967852b3cb8532dd0adb11e693b
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/__init__.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/nova/api/openstack/__init__.py b/nova/api/openstack/__init__.py
index b2c189e79..18c38a2fd 100644
--- a/nova/api/openstack/__init__.py
+++ b/nova/api/openstack/__init__.py
@@ -117,6 +117,18 @@ class ProjectMapper(APIMapper):
**kwargs)
+class PlainMapper(APIMapper):
+ def resource(self, member_name, collection_name, **kwargs):
+ if 'parent_resource' in kwargs:
+ parent_resource = kwargs['parent_resource']
+ p_collection = parent_resource['collection_name']
+ p_member = parent_resource['member_name']
+ kwargs['path_prefix'] = '%s/:%s_id' % (p_collection, p_member)
+ routes.Mapper.resource(self, member_name,
+ collection_name,
+ **kwargs)
+
+
class APIRouter(base_wsgi.Router):
"""
Routes requests on the OpenStack API to the appropriate controller
@@ -222,7 +234,7 @@ class APIRouterV3(base_wsgi.Router):
check_func=_check_load_extension,
invoke_on_load=True)
- mapper = ProjectMapper()
+ mapper = PlainMapper()
self.resources = {}
# NOTE(cyeoh) Core API support is rewritten as extensions