Use the new microversion-parse library to parse the version headers

Closes-Bug: #1584718

Change-Id: Icb2e21775d1500878bb6d29f45e82e32f14332aa
This commit is contained in:
cid 2024-03-20 15:58:44 +01:00
parent d68aea2ebe
commit 5552e54d8b
2 changed files with 13 additions and 11 deletions

View File

@ -14,6 +14,7 @@
import functools
import microversion_parse as mvp
from webob import exc
from ironic.common.i18n import _
@ -56,19 +57,19 @@ class Version(object):
:returns: a tuple of (major, minor) version numbers
:raises: webob.HTTPNotAcceptable
"""
version_str = headers.get(Version.string, default_version)
if version_str.lower() == 'latest':
parse_str = latest_version
else:
parse_str = version_str
try:
version = tuple(int(i) for i in parse_str.split('.'))
except ValueError:
version = ()
version_str = mvp.get_version(headers,
service_type='baremetal',
legacy_headers=[Version.string])
if not version_str:
version_str = default_version
if version_str.lower() == 'latest':
version_str = latest_version
if len(version) != 2:
version = mvp.parse_version_string(version_str)
if len(version) != 2:
raise ValueError
except (ValueError, TypeError, AttributeError):
raise exc.HTTPNotAcceptable(_(
"Invalid value for %s header") % Version.string)
return version

View File

@ -49,3 +49,4 @@ openstacksdk>=0.48.0 # Apache-2.0
sushy>=4.8.0
construct>=2.9.39 # MIT
netaddr>=0.9.0 # BSD
microversion_parse>=1.0.1 # Apache-2.0