Merge "Add api version detection support to glance tests."
diff --git a/tempest/common/rest_client.py b/tempest/common/rest_client.py
index 5ce3be6..6147aa1 100644
--- a/tempest/common/rest_client.py
+++ b/tempest/common/rest_client.py
@@ -192,6 +192,13 @@
def copy(self, url, headers=None):
return self.request('COPY', url, headers)
+ def get_versions(self):
+ resp, body = self.get('')
+ body = self._parse_resp(body)
+ body = body['versions']
+ versions = map(lambda x: x['id'], body)
+ return resp, versions
+
def _log_request(self, method, req_url, headers, body):
self.LOG.info('Request: ' + method + ' ' + req_url)
if headers:
diff --git a/tempest/tests/image/base.py b/tempest/tests/image/base.py
index 6fb6e9f..65d81b6 100644
--- a/tempest/tests/image/base.py
+++ b/tempest/tests/image/base.py
@@ -60,6 +60,17 @@
cls.created_images.append(image['id'])
return resp, image
+ @classmethod
+ def _check_version(cls, version):
+ __, versions = cls.client.get_versions()
+ if version == 'v2.0':
+ if 'v2.0' in versions:
+ return True
+ elif version == 'v1.0':
+ if 'v1.1' in versions or 'v1.0' in versions:
+ return True
+ return False
+
class BaseV1ImageTest(BaseImageTest):
@@ -67,6 +78,9 @@
def setUpClass(cls):
super(BaseV1ImageTest, cls).setUpClass()
cls.client = cls.os.image_client
+ if not cls._check_version('v1.0'):
+ msg = "Glance API v1 not supported"
+ raise cls.skipException(msg)
class BaseV2ImageTest(BaseImageTest):
@@ -75,3 +89,6 @@
def setUpClass(cls):
super(BaseV2ImageTest, cls).setUpClass()
cls.client = cls.os.image_client_v2
+ if not cls._check_version('v2.0'):
+ msg = "Glance API v2 not supported"
+ raise cls.skipException(msg)