Browse Source

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
changes/49/768349/2
Roman Safronov 1 year ago
parent
commit
66fec04b96
  1. 6
      config_tempest/services/base.py
  2. 42
      config_tempest/services/placement.py
  3. 8
      releasenotes/notes/discover-placement-service-bbd6522424e4eee4.yaml

6
config_tempest/services/base.py

@ -180,16 +180,16 @@ class VersionedService(Service):
versions.append(version)
return list(map(lambda x: x['id'], versions))
def filter_api_microversions(self):
def filter_api_microversions(self, max_version='version'):
min_microversion = ''
max_microversion = ''
for version in self.versions_body['versions']:
if version['status'] != "DEPRECATED":
if max_microversion == '':
max_microversion = version['version']
max_microversion = version[max_version]
else:
max_microversion = max(max_microversion,
version['version'])
version[max_version])
if 'min_version' not in version:
continue
if min_microversion == '':

42
config_tempest/services/placement.py

@ -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'

8
releasenotes/notes/discover-placement-service-bbd6522424e4eee4.yaml

@ -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…
Cancel
Save