diff --git a/ironic_inspector/main.py b/ironic_inspector/main.py index d11d391a4..b15d929e5 100644 --- a/ironic_inspector/main.py +++ b/ironic_inspector/main.py @@ -21,6 +21,8 @@ from oslo_utils import strutils from oslo_utils import uuidutils from werkzeug.middleware import proxy_fix +from microversion_parse import parse_version_string + from ironic_inspector import api_tools from ironic_inspector.common import context from ironic_inspector.common import coordination @@ -35,6 +37,7 @@ from ironic_inspector import process from ironic_inspector import rules from ironic_inspector import utils + CONF = ironic_inspector.conf.CONF @@ -118,10 +121,9 @@ def _get_version(): ver = flask.request.headers.get(conf_opts.VERSION_HEADER, _DEFAULT_API_VERSION) try: - if ver.lower() == 'latest': + requested = parse_version_string(ver) or _DEFAULT_API_VERSION + if 'latest' in ver.lower(): 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 or latest'), code=400) diff --git a/requirements.txt b/requirements.txt index 7951400da..a4dfc5faa 100644 --- a/requirements.txt +++ b/requirements.txt @@ -38,3 +38,4 @@ tenacity>=6.2.0 # Apache-2.0 stevedore>=1.20.0 # Apache-2.0 SQLAlchemy>=1.4.0 # MIT tooz>=2.5.1 # Apache-2.0 +microversion_parse>=0.1.4