Add placement service versions discovery
Some tempest tests require placement service microversions to be specified, e.g. MinBwAllocationPlacementTest. This patch adds discovery of the placement service min and max microversions. Change-Id: I639cbf0d63cc2a3235615762d61347b9bb0c5e6f
This commit is contained in:
parent
d5db4b4a49
commit
66fec04b96
@ -180,16 +180,16 @@ class VersionedService(Service):
|
|||||||
versions.append(version)
|
versions.append(version)
|
||||||
return list(map(lambda x: x['id'], versions))
|
return list(map(lambda x: x['id'], versions))
|
||||||
|
|
||||||
def filter_api_microversions(self):
|
def filter_api_microversions(self, max_version='version'):
|
||||||
min_microversion = ''
|
min_microversion = ''
|
||||||
max_microversion = ''
|
max_microversion = ''
|
||||||
for version in self.versions_body['versions']:
|
for version in self.versions_body['versions']:
|
||||||
if version['status'] != "DEPRECATED":
|
if version['status'] != "DEPRECATED":
|
||||||
if max_microversion == '':
|
if max_microversion == '':
|
||||||
max_microversion = version['version']
|
max_microversion = version[max_version]
|
||||||
else:
|
else:
|
||||||
max_microversion = max(max_microversion,
|
max_microversion = max(max_microversion,
|
||||||
version['version'])
|
version[max_version])
|
||||||
if 'min_version' not in version:
|
if 'min_version' not in version:
|
||||||
continue
|
continue
|
||||||
if min_microversion == '':
|
if min_microversion == '':
|
||||||
|
42
config_tempest/services/placement.py
Normal file
42
config_tempest/services/placement.py
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Copyright 2020 Red Hat, Inc.
|
||||||
|
# All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
import json
|
||||||
|
|
||||||
|
from config_tempest.services.base import VersionedService
|
||||||
|
|
||||||
|
|
||||||
|
class PlacementService(VersionedService):
|
||||||
|
def set_versions(self):
|
||||||
|
url, top_level = self.no_port_cut_url()
|
||||||
|
body = self.do_get(url, top_level=top_level,
|
||||||
|
top_level_path='placement')
|
||||||
|
self.versions_body = json.loads(body)
|
||||||
|
|
||||||
|
def set_default_tempest_options(self, conf):
|
||||||
|
# set microversions
|
||||||
|
m_versions = self.filter_api_microversions(max_version='max_version')
|
||||||
|
conf.set(
|
||||||
|
'placement', 'min_microversion', m_versions['min_microversion'])
|
||||||
|
conf.set(
|
||||||
|
'placement', 'max_microversion', m_versions['max_microversion'])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_service_type():
|
||||||
|
return ['placement']
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_codename():
|
||||||
|
return 'placement'
|
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
discover-tempest-config can now automatically set the following 2 tempest
|
||||||
|
options:
|
||||||
|
* CONF.placement.min_microversion
|
||||||
|
* CONF.placement.max_microversion
|
||||||
|
The mentioned options are set based on the placement service response.
|
Loading…
x
Reference in New Issue
Block a user