Merge "Return v2 version info with v2 legacy compatible wrapper"

This commit is contained in:
Jenkins 2015-08-12 12:28:34 +00:00 committed by Gerrit Code Review
commit d4522d649b
3 changed files with 25 additions and 8 deletions

View File

@ -28,6 +28,8 @@ class VersionsController(wsgi.Controller):
@extensions.expected_errors(404)
def show(self, req, id='v2.1'):
builder = views_versions.get_view_builder(req)
if req.is_legacy_v2():
id = 'v2.0'
if id not in versions.VERSIONS:
raise webob.exc.HTTPNotFound()

View File

@ -101,10 +101,14 @@ def _get_self_href(response):
class VersionsTestV20(test.NoDBTestCase):
def setUp(self):
super(VersionsTestV20, self).setUp()
self.wsgi_app = fakes.wsgi_app()
def test_get_version_list(self):
req = webob.Request.blank('/')
req.accept = "application/json"
res = req.get_response(fakes.wsgi_app())
res = req.get_response(self.wsgi_app)
self.assertEqual(res.status_int, 200)
self.assertEqual(res.content_type, "application/json")
versions = jsonutils.loads(res.body)["versions"]
@ -139,7 +143,7 @@ class VersionsTestV20(test.NoDBTestCase):
def test_get_version_list_302(self):
req = webob.Request.blank('/v2')
req.accept = "application/json"
res = req.get_response(fakes.wsgi_app())
res = req.get_response(self.wsgi_app)
self.assertEqual(res.status_int, 302)
redirect_req = webob.Request.blank('/v2/')
self.assertEqual(res.location, redirect_req.url)
@ -149,7 +153,7 @@ class VersionsTestV20(test.NoDBTestCase):
accept = "application/json"
req = webob.Request.blank(url)
req.accept = accept
res = req.get_response(fakes.wsgi_app())
res = req.get_response(self.wsgi_app)
self.assertEqual(res.status_int, 200)
self.assertEqual(res.content_type, "application/json")
version = jsonutils.loads(res.body)
@ -192,13 +196,13 @@ class VersionsTestV20(test.NoDBTestCase):
def test_get_version_2_versions_invalid(self):
req = webob.Request.blank('/v2/versions/1234')
req.accept = "application/json"
res = req.get_response(fakes.wsgi_app())
res = req.get_response(self.wsgi_app)
self.assertEqual(404, res.status_int)
def test_multi_choice_image(self):
req = webob.Request.blank('/images/1')
req.accept = "application/json"
res = req.get_response(fakes.wsgi_app())
res = req.get_response(self.wsgi_app)
self.assertEqual(res.status_int, 300)
self.assertEqual(res.content_type, "application/json")
@ -249,7 +253,7 @@ class VersionsTestV20(test.NoDBTestCase):
"""
req = webob.Request.blank('/servers')
req.accept = "application/atom+xml"
res = req.get_response(fakes.wsgi_app())
res = req.get_response(self.wsgi_app)
self.assertEqual(res.status_int, 300)
self.assertEqual(res.content_type, "application/json")
@ -257,7 +261,7 @@ class VersionsTestV20(test.NoDBTestCase):
uuid = str(stdlib_uuid.uuid4())
req = webob.Request.blank('/servers/' + uuid)
req.accept = "application/json"
res = req.get_response(fakes.wsgi_app())
res = req.get_response(self.wsgi_app)
self.assertEqual(res.status_int, 300)
self.assertEqual(res.content_type, "application/json")
@ -455,3 +459,10 @@ class VersionBehindSslTestCase(test.NoDBTestCase):
self.assertEqual(200, res.status_int)
href = _get_self_href(res)
self.assertTrue(href.startswith('https://'))
class VersionsTestV21WithV2CompatibleWrapper(VersionsTestV20):
def setUp(self):
super(VersionsTestV21WithV2CompatibleWrapper, self).setUp()
self.wsgi_app = fakes.wsgi_app_v21(v2_compatible=True)

View File

@ -105,10 +105,13 @@ def wsgi_app(inner_app_v2=None, fake_auth_context=None,
def wsgi_app_v21(inner_app_v21=None, fake_auth_context=None,
use_no_auth=False, ext_mgr=None, init_only=None):
use_no_auth=False, ext_mgr=None, init_only=None, v2_compatible=False):
if not inner_app_v21:
inner_app_v21 = compute.APIRouterV21(init_only)
if v2_compatible:
inner_app_v21 = openstack_api.LegacyV2CompatibleWrapper(inner_app_v21)
if use_no_auth:
api_v21 = openstack_api.FaultWrapper(auth.NoAuthMiddlewareV3(
limits.RateLimitingMiddleware(inner_app_v21)))
@ -123,6 +126,7 @@ def wsgi_app_v21(inner_app_v21=None, fake_auth_context=None,
mapper = urlmap.URLMap()
mapper['/v2'] = api_v21
mapper['/v2.1'] = api_v21
mapper['/'] = openstack_api.FaultWrapper(versions.Versions())
return mapper