Add microversion headers to root ('/') endpoint
Adds microversion headers to the root endpoint so the '/' and '/v1' endpoints consistently include microversion headers. Closes-Bug: #2079023 Change-Id: Iea78b33e04e256c1139dd46a25f6d6a2be8e1ccc
This commit is contained in:
parent
d44a658836
commit
b19507d647
@ -38,6 +38,7 @@ class RootController(object):
|
|||||||
|
|
||||||
@method.expose()
|
@method.expose()
|
||||||
def index(self, *args):
|
def index(self, *args):
|
||||||
|
V1.add_version_attributes()
|
||||||
if args:
|
if args:
|
||||||
pecan.abort(404)
|
pecan.abort(404)
|
||||||
return root()
|
return root()
|
||||||
@ -49,6 +50,7 @@ class RootController(object):
|
|||||||
It redirects the request to the default version of the ironic API
|
It redirects the request to the default version of the ironic API
|
||||||
if the version number is not specified in the url.
|
if the version number is not specified in the url.
|
||||||
"""
|
"""
|
||||||
|
V1.add_version_attributes()
|
||||||
|
|
||||||
# support paths which are missing the first version element
|
# support paths which are missing the first version element
|
||||||
if primary_key and primary_key != version.ID_VERSION1:
|
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
|
# NOTE: The reason why v1() it's being called for every
|
||||||
# request is because we need to get the host url from
|
# request is because we need to get the host url from
|
||||||
# the request object to make the links.
|
# the request object to make the links.
|
||||||
self._add_version_attributes()
|
if api.request.method not in ('GET', 'HEAD'):
|
||||||
if api.request.method != "GET":
|
|
||||||
pecan.abort(http_client.METHOD_NOT_ALLOWED)
|
pecan.abort(http_client.METHOD_NOT_ALLOWED)
|
||||||
|
|
||||||
return v1()
|
return v1()
|
||||||
@ -169,7 +168,7 @@ class Controller(object):
|
|||||||
'max': versions.max_version_string()},
|
'max': versions.max_version_string()},
|
||||||
headers=headers)
|
headers=headers)
|
||||||
|
|
||||||
def _add_version_attributes(self):
|
def add_version_attributes(self):
|
||||||
v = base.Version(api.request.headers, versions.min_version_string(),
|
v = base.Version(api.request.headers, versions.min_version_string(),
|
||||||
versions.max_version_string())
|
versions.max_version_string())
|
||||||
|
|
||||||
@ -186,7 +185,6 @@ class Controller(object):
|
|||||||
|
|
||||||
@pecan.expose()
|
@pecan.expose()
|
||||||
def _lookup(self, primary_key, *remainder):
|
def _lookup(self, primary_key, *remainder):
|
||||||
self._add_version_attributes()
|
|
||||||
|
|
||||||
controller = self._subcontroller_map.get(primary_key)
|
controller = self._subcontroller_map.get(primary_key)
|
||||||
if not controller:
|
if not controller:
|
||||||
|
@ -29,6 +29,28 @@ class TestV1Routing(api_base.BaseApiTest):
|
|||||||
mock.ANY,
|
mock.ANY,
|
||||||
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):
|
def test_min_version(self):
|
||||||
response = self.get_json(
|
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