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())
mapper.resource("consistencygroup", "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()
def test_list_consistencygroups_json(self):
@ddt.data(2, 3)
def test_list_consistencygroups_json(self, version):
consistencygroup1 = self._create_consistencygroup()
consistencygroup2 = 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.headers['Content-Type'] = 'application/json'
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.v2 import limits
from cinder.api.v2 import router
from cinder.api.v3 import router as router_v3
from cinder.api import versions
from cinder import context
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,
use_no_auth=False, ext_mgr=None):
use_no_auth=False, ext_mgr=None,
inner_app_v3=None):
if not inner_app_v2:
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_context is not None:
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)
api_v2 = fault.FaultWrapper(auth.InjectContext(ctxt,
inner_app_v2))
api_v3 = fault.FaultWrapper(auth.InjectContext(ctxt,
inner_app_v3))
elif use_no_auth:
api_v2 = fault.FaultWrapper(auth.NoAuthMiddleware(
limits.RateLimitingMiddleware(inner_app_v2)))
api_v3 = fault.FaultWrapper(auth.NoAuthMiddleware(
limits.RateLimitingMiddleware(inner_app_v3)))
else:
api_v2 = fault.FaultWrapper(auth.AuthMiddleware(
limits.RateLimitingMiddleware(inner_app_v2)))
api_v3 = fault.FaultWrapper(auth.AuthMiddleware(
limits.RateLimitingMiddleware(inner_app_v3)))
mapper = urlmap.URLMap()
mapper['/v2'] = api_v2
mapper['/v3'] = api_v3
mapper['/'] = fault.FaultWrapper(versions.VersionsController())
return mapper