Support latest as the microversion value

Adds support to use latest as the microversion value. When set to
latest, the maximum version is assumed by ironic-inspector.

Story: 1672400
Task: 11363

Change-Id: I35be1034697a7d69ed30af9542d9711fb2f65bd0
This commit is contained in:
Kaifeng Wang 2018-09-14 17:28:48 +08:00
parent 34b150340c
commit 04ee0bc031
3 changed files with 16 additions and 2 deletions

View File

@ -49,10 +49,13 @@ def _get_version():
ver = flask.request.headers.get(conf_opts.VERSION_HEADER,
_DEFAULT_API_VERSION)
try:
requested = tuple(int(x) for x in ver.split('.'))
if ver.lower() == 'latest':
requested = CURRENT_API_VERSION
else:
requested = tuple(int(x) for x in ver.split('.'))
except (ValueError, TypeError):
return error_response(_('Malformed API version: expected string '
'in form of X.Y'), code=400)
'in form of X.Y or latest'), code=400)
return requested

View File

@ -633,6 +633,12 @@ class TestApiVersions(BaseAPITest):
self.assertIn('%d.%d' % main.MINIMUM_API_VERSION, error)
self.assertIn('%d.%d' % main.CURRENT_API_VERSION, error)
def test_request_latest_version(self):
headers = {conf_opts.VERSION_HEADER: 'latest'}
res = self.app.get('/', headers=headers)
self.assertEqual(200, res.status_code)
self._check_version_present(res)
class TestPlugins(unittest.TestCase):
@mock.patch.object(example_plugin.ExampleProcessingHook,

View File

@ -0,0 +1,5 @@
---
features:
- |
Adds support to use ``latest`` as the microversion value in the request
to the ironic-inspector API.