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 ce9dea9841
2 changed files with 25 additions and 0 deletions

View File

@ -63,9 +63,23 @@ 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 minimum and remote microversions."""
_, resp_body = self._show_request(None, uri='/')
version = resp_body.get('default_version', {})
api_min = version.get('min_version')
api_max = version.get('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,8 @@ class BaseBaremetalTest(api_version_utils.BaseMicroversionTest,
cfg_min_version = CONF.baremetal.min_microversion
cfg_max_version = CONF.baremetal.max_microversion
# Check versions and skip based upon *configuration*
api_version_utils.check_skip_with_microversion(cls.min_microversion,
cls.max_microversion,
cfg_min_version,
@ -100,6 +102,15 @@ class BaseBaremetalTest(api_version_utils.BaseMicroversionTest,
else:
cls.client = cls.os_admin.baremetal.BaremetalClient()
# Skip the test if the class version doesn't match.
if cls.min_microversion or cls.max_microversion:
api_min, api_max = cls.client.get_min_max_api_microversions()
api_version_utils.check_skip_with_microversion(
cls.min_microversion,
cls.max_microversion,
api_min,
api_max)
@classmethod
def resource_setup(cls):
super(BaseBaremetalTest, cls).resource_setup()