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