Merge "Add microversion headers to root ('/') endpoint"
This commit is contained in:
commit
4ca6a3b573
@ -38,6 +38,7 @@ class RootController(object):
|
||||
|
||||
@method.expose()
|
||||
def index(self, *args):
|
||||
V1.add_version_attributes()
|
||||
if args:
|
||||
pecan.abort(404)
|
||||
return root()
|
||||
@ -49,6 +50,7 @@ class RootController(object):
|
||||
It redirects the request to the default version of the ironic API
|
||||
if the version number is not specified in the url.
|
||||
"""
|
||||
V1.add_version_attributes()
|
||||
|
||||
# support paths which are missing the first version element
|
||||
if primary_key and primary_key != version.ID_VERSION1:
|
||||
|
@ -141,8 +141,7 @@ class Controller(object):
|
||||
# NOTE: The reason why v1() it's being called for every
|
||||
# request is because we need to get the host url from
|
||||
# the request object to make the links.
|
||||
self._add_version_attributes()
|
||||
if api.request.method != "GET":
|
||||
if api.request.method not in ('GET', 'HEAD'):
|
||||
pecan.abort(http_client.METHOD_NOT_ALLOWED)
|
||||
|
||||
return v1()
|
||||
@ -169,7 +168,7 @@ class Controller(object):
|
||||
'max': versions.max_version_string()},
|
||||
headers=headers)
|
||||
|
||||
def _add_version_attributes(self):
|
||||
def add_version_attributes(self):
|
||||
v = base.Version(api.request.headers, versions.min_version_string(),
|
||||
versions.max_version_string())
|
||||
|
||||
@ -186,7 +185,6 @@ class Controller(object):
|
||||
|
||||
@pecan.expose()
|
||||
def _lookup(self, primary_key, *remainder):
|
||||
self._add_version_attributes()
|
||||
|
||||
controller = self._subcontroller_map.get(primary_key)
|
||||
if not controller:
|
||||
|
@ -29,6 +29,28 @@ class TestV1Routing(api_base.BaseApiTest):
|
||||
mock.ANY,
|
||||
mock.ANY)
|
||||
|
||||
def test_microversion_headers(self):
|
||||
# Check root endpoint
|
||||
response = self.app.head('/')
|
||||
self.assertEqual(200, response.status_int)
|
||||
self.assertIn('X-OpenStack-Ironic-API-Minimum-Version',
|
||||
response.headers)
|
||||
self.assertIn('X-OpenStack-Ironic-API-Maximum-Version',
|
||||
response.headers)
|
||||
|
||||
self._check_version.reset_mock()
|
||||
|
||||
# Check v1 endpoint
|
||||
response = self.app.head('/v1')
|
||||
self.assertEqual(200, response.status_int)
|
||||
self.assertIn('X-OpenStack-Ironic-API-Minimum-Version',
|
||||
response.headers)
|
||||
self.assertIn('X-OpenStack-Ironic-API-Maximum-Version',
|
||||
response.headers)
|
||||
|
||||
# -check_version should be called only once
|
||||
self.assertEqual(1, self._check_version.call_count)
|
||||
|
||||
def test_min_version(self):
|
||||
response = self.get_json(
|
||||
'/',
|
||||
|
@ -0,0 +1,4 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Adds microversion headers to the root ('/') endpoint.
|
Loading…
x
Reference in New Issue
Block a user