Merge "Add support for microversions for compute"
This commit is contained in:
commit
ca51d4d94c
@ -38,6 +38,7 @@ class Service(object):
|
||||
|
||||
self.extensions = []
|
||||
self.versions = []
|
||||
self.versions_body = {'versions': []}
|
||||
|
||||
def do_get(self, url, top_level=False, top_level_path=""):
|
||||
parts = list(urllib.parse.urlparse(url))
|
||||
@ -150,8 +151,8 @@ class Service(object):
|
||||
class VersionedService(Service):
|
||||
def set_versions(self, top_level=True):
|
||||
body = self.do_get(self.service_url, top_level=top_level)
|
||||
body = json.loads(body)
|
||||
self.versions = self.deserialize_versions(body)
|
||||
self.versions_body = json.loads(body)
|
||||
self.versions = self.deserialize_versions(self.versions_body)
|
||||
|
||||
def deserialize_versions(self, body):
|
||||
versions = []
|
||||
@ -160,6 +161,26 @@ class VersionedService(Service):
|
||||
versions.append(version)
|
||||
return list(map(lambda x: x['id'], versions))
|
||||
|
||||
def filter_api_microversions(self):
|
||||
min_microversion = ''
|
||||
max_microversion = ''
|
||||
for version in self.versions_body['versions']:
|
||||
if version['status'] != "DEPRECATED":
|
||||
if max_microversion == '':
|
||||
max_microversion = version['version']
|
||||
else:
|
||||
max_microversion = max(max_microversion,
|
||||
version['version'])
|
||||
if 'min_version' not in version:
|
||||
continue
|
||||
if min_microversion == '':
|
||||
min_microversion = version['min_version']
|
||||
else:
|
||||
min_microversion = min(min_microversion,
|
||||
version['min_version'])
|
||||
return {'max_microversion': max_microversion,
|
||||
'min_microversion': min_microversion}
|
||||
|
||||
def no_port_cut_url(self):
|
||||
# if there is no port defined, cut the url from version to the end
|
||||
u = urllib3.util.parse_url(self.service_url)
|
||||
|
@ -30,8 +30,8 @@ class ComputeService(VersionedService):
|
||||
def set_versions(self):
|
||||
url, top_level = self.no_port_cut_url()
|
||||
body = self.do_get(url, top_level=top_level)
|
||||
body = json.loads(body)
|
||||
self.versions = self.deserialize_versions(body)
|
||||
self.versions_body = json.loads(body)
|
||||
self.versions = self.deserialize_versions(self.versions_body)
|
||||
|
||||
def set_default_tempest_options(self, conf):
|
||||
conf.set('compute-feature-enabled', 'console_output', 'True')
|
||||
@ -42,6 +42,10 @@ class ComputeService(VersionedService):
|
||||
# compute nodes
|
||||
if self._get_number_of_hosts() >= 2:
|
||||
conf.set('compute-feature-enabled', 'resize', 'True')
|
||||
# set microversions
|
||||
m_versions = self.filter_api_microversions()
|
||||
conf.set('compute', 'min_microversion', m_versions['min_microversion'])
|
||||
conf.set('compute', 'max_microversion', m_versions['max_microversion'])
|
||||
|
||||
def get_service_extension_key(self):
|
||||
return 'api_extensions'
|
||||
|
@ -13,37 +13,16 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import json
|
||||
|
||||
from config_tempest.services.base import VersionedService
|
||||
from config_tempest.utils import get_base_url
|
||||
|
||||
|
||||
class ShareService(VersionedService):
|
||||
|
||||
def get_api_microversion(self):
|
||||
version_url = get_base_url(self.service_url)
|
||||
body = self.do_get(version_url)
|
||||
body = json.loads(body)
|
||||
return body
|
||||
|
||||
def set_default_tempest_options(self, conf):
|
||||
if 'v2' in self.service_url:
|
||||
microversions = self.get_api_microversion()
|
||||
min_microversion = {
|
||||
version['min_version'] for version in microversions['versions']
|
||||
if version['id'] == 'v2.0'
|
||||
}
|
||||
|
||||
max_microversion = {
|
||||
version['version'] for version in microversions['versions']
|
||||
if version['id'] == 'v2.0'
|
||||
}
|
||||
|
||||
conf.set('share', 'min_api_microversion',
|
||||
''.join(min_microversion))
|
||||
conf.set('share', 'max_api_microversion',
|
||||
''.join(max_microversion))
|
||||
m_vs = self.filter_api_microversions()
|
||||
conf.set('share', 'min_api_microversion', m_vs['min_microversion'])
|
||||
conf.set('share', 'max_api_microversion', m_vs['max_microversion'])
|
||||
|
||||
def get_unversioned_service_name(self):
|
||||
return 'share'
|
||||
|
@ -17,7 +17,6 @@ import json
|
||||
|
||||
from config_tempest import constants as C
|
||||
from config_tempest.services.base import VersionedService
|
||||
from config_tempest.utils import get_base_url
|
||||
|
||||
from tempest.lib import exceptions
|
||||
|
||||
@ -31,30 +30,14 @@ class VolumeService(VersionedService):
|
||||
def set_versions(self):
|
||||
url, top_level = self.no_port_cut_url()
|
||||
body = self.do_get(url, top_level=top_level)
|
||||
body = json.loads(body)
|
||||
self.versions = self.deserialize_versions(body)
|
||||
|
||||
def set_api_microversion(self):
|
||||
version_url = get_base_url(self.service_url)
|
||||
body = self.do_get(version_url)
|
||||
body = json.loads(body)
|
||||
return body
|
||||
self.versions_body = json.loads(body)
|
||||
self.versions = self.deserialize_versions(self.versions_body)
|
||||
|
||||
def set_default_tempest_options(self, conf):
|
||||
if 'v3' in self.service_url:
|
||||
microversions = self.set_api_microversion()
|
||||
min_microversion = {
|
||||
version['min_version'] for version in microversions['versions']
|
||||
if version['id'] == 'v3.0'
|
||||
}
|
||||
|
||||
max_microversion = {
|
||||
version['version'] for version in microversions['versions']
|
||||
if version['id'] == 'v3.0'
|
||||
}
|
||||
|
||||
conf.set('volume', 'min_microversion', ''.join(min_microversion))
|
||||
conf.set('volume', 'max_microversion', ''.join(max_microversion))
|
||||
m_vs = self.filter_api_microversions()
|
||||
conf.set('volume', 'min_microversion', m_vs['min_microversion'])
|
||||
conf.set('volume', 'max_microversion', m_vs['max_microversion'])
|
||||
|
||||
def get_service_extension_key(self):
|
||||
return 'api_extensions'
|
||||
|
Loading…
x
Reference in New Issue
Block a user