Fix consisgroup V3 interfaces

The consisgroup list/show etc interfaces are blocked in V3 API,
this patch is to fix it.

Change-Id: I428a661a12d1020ed844f55021a94bbf61c79169
Closes-Bug: #1597223
This commit is contained in:
lisali 2016-07-04 16:21:44 +08:00
parent 6f2112caa8
commit 1a0dd6be5a
3 changed files with 21 additions and 4 deletions

View File

@ -104,4 +104,5 @@ class APIRouter(cinder.api.openstack.APIRouter):
consistencygroups.create_resource()) consistencygroups.create_resource())
mapper.resource("consistencygroup", "consistencygroups", mapper.resource("consistencygroup", "consistencygroups",
controller=self.resources['consistencygroups'], controller=self.resources['consistencygroups'],
member={'update': 'PUT'}) collection={'detail': 'GET'},
member={'action': 'POST'})

View File

@ -137,12 +137,16 @@ class ConsistencyGroupsAPITestCase(test.TestCase):
consistencygroup.destroy() consistencygroup.destroy()
def test_list_consistencygroups_json(self): @ddt.data(2, 3)
def test_list_consistencygroups_json(self, version):
consistencygroup1 = self._create_consistencygroup() consistencygroup1 = self._create_consistencygroup()
consistencygroup2 = self._create_consistencygroup() consistencygroup2 = self._create_consistencygroup()
consistencygroup3 = self._create_consistencygroup() consistencygroup3 = self._create_consistencygroup()
req = webob.Request.blank('/v2/%s/consistencygroups' % fake.PROJECT_ID) req = webob.Request.blank('/v%(version)s/%(project_id)s/'
'consistencygroups'
% {'version': version,
'project_id': fake.PROJECT_ID})
req.method = 'GET' req.method = 'GET'
req.headers['Content-Type'] = 'application/json' req.headers['Content-Type'] = 'application/json'
res = req.get_response(fakes.wsgi_app( res = req.get_response(fakes.wsgi_app(

View File

@ -29,6 +29,7 @@ from cinder.api.openstack import wsgi as os_wsgi
from cinder.api import urlmap from cinder.api import urlmap
from cinder.api.v2 import limits from cinder.api.v2 import limits
from cinder.api.v2 import router from cinder.api.v2 import router
from cinder.api.v3 import router as router_v3
from cinder.api import versions from cinder.api import versions
from cinder import context from cinder import context
from cinder.tests.unit import fake_constants as fake from cinder.tests.unit import fake_constants as fake
@ -60,10 +61,14 @@ def fake_wsgi(self, req):
def wsgi_app(inner_app_v2=None, fake_auth=True, fake_auth_context=None, def wsgi_app(inner_app_v2=None, fake_auth=True, fake_auth_context=None,
use_no_auth=False, ext_mgr=None): use_no_auth=False, ext_mgr=None,
inner_app_v3=None):
if not inner_app_v2: if not inner_app_v2:
inner_app_v2 = router.APIRouter(ext_mgr) inner_app_v2 = router.APIRouter(ext_mgr)
if not inner_app_v3:
inner_app_v3 = router_v3.APIRouter(ext_mgr)
if fake_auth: if fake_auth:
if fake_auth_context is not None: if fake_auth_context is not None:
ctxt = fake_auth_context ctxt = fake_auth_context
@ -72,15 +77,22 @@ def wsgi_app(inner_app_v2=None, fake_auth=True, fake_auth_context=None,
auth_token=True) auth_token=True)
api_v2 = fault.FaultWrapper(auth.InjectContext(ctxt, api_v2 = fault.FaultWrapper(auth.InjectContext(ctxt,
inner_app_v2)) inner_app_v2))
api_v3 = fault.FaultWrapper(auth.InjectContext(ctxt,
inner_app_v3))
elif use_no_auth: elif use_no_auth:
api_v2 = fault.FaultWrapper(auth.NoAuthMiddleware( api_v2 = fault.FaultWrapper(auth.NoAuthMiddleware(
limits.RateLimitingMiddleware(inner_app_v2))) limits.RateLimitingMiddleware(inner_app_v2)))
api_v3 = fault.FaultWrapper(auth.NoAuthMiddleware(
limits.RateLimitingMiddleware(inner_app_v3)))
else: else:
api_v2 = fault.FaultWrapper(auth.AuthMiddleware( api_v2 = fault.FaultWrapper(auth.AuthMiddleware(
limits.RateLimitingMiddleware(inner_app_v2))) limits.RateLimitingMiddleware(inner_app_v2)))
api_v3 = fault.FaultWrapper(auth.AuthMiddleware(
limits.RateLimitingMiddleware(inner_app_v3)))
mapper = urlmap.URLMap() mapper = urlmap.URLMap()
mapper['/v2'] = api_v2 mapper['/v2'] = api_v2
mapper['/v3'] = api_v3
mapper['/'] = fault.FaultWrapper(versions.VersionsController()) mapper['/'] = fault.FaultWrapper(versions.VersionsController())
return mapper return mapper