WIP: leverage remote microversion without requiring human config

Change-Id: I197e6c30c8514e1f72cb1ce3ebad851802632203
This commit is contained in:
Julia Kreger 2024-03-26 08:47:26 -07:00
parent 7241770603
commit c7e4219cd4
2 changed files with 22 additions and 0 deletions

View File

@ -63,9 +63,22 @@ class BaremetalClient(rest_client.RestClient):
def get_headers(self):
headers = super(BaremetalClient, self).get_headers()
if BAREMETAL_MICROVERSION:
# NOTE(TheJulia): This is not great, because it can blind a test
# to the actual version supported.
headers[self.api_microversion_header_name] = BAREMETAL_MICROVERSION
return headers
def get_raw_headers(self):
"""A proper get headers without guessing the microversion."""
return super(BaremetalClient, self).get_headers()
def get_min_max_api_microversions(self):
"""Returns a tuple of min, max microversions."""
headers = self.get_raw_headers()
api_min = headers.get('x-openstack-ironic-api-minimum-version')
api_max = headers.get('x-openstack-ironic-api-maximum-version')
return (api_min, api_max)
def request(self, *args, **kwargs):
resp, resp_body = super(BaremetalClient, self).request(*args, **kwargs)
latest_microversion = api_version_utils.LATEST_MICROVERSION

View File

@ -76,6 +76,15 @@ class BaseBaremetalTest(api_version_utils.BaseMicroversionTest,
cfg_min_version = CONF.baremetal.min_microversion
cfg_max_version = CONF.baremetal.max_microversion
# Explicitly check with the remote endpoint, gather the versions
# and feed that into the skip check if not overridden.
api_min, api_max = cls.client.get_min_max_api_microversions()
if not cfg_min_version:
cfg_min_version = api_min
if not cfg_max_version:
cfg_max_version = api_max
api_version_utils.check_skip_with_microversion(cls.min_microversion,
cls.max_microversion,
cfg_min_version,