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)