diff --git a/config_tempest/services/base.py b/config_tempest/services/base.py index 234185e2..b4c31ac4 100644 --- a/config_tempest/services/base.py +++ b/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 == '': diff --git a/config_tempest/services/placement.py b/config_tempest/services/placement.py new file mode 100644 index 00000000..4e00c76e --- /dev/null +++ b/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' diff --git a/releasenotes/notes/discover-placement-service-bbd6522424e4eee4.yaml b/releasenotes/notes/discover-placement-service-bbd6522424e4eee4.yaml new file mode 100644 index 00000000..b868ed47 --- /dev/null +++ b/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.