diff options
| author | scottda <scott.dangelo@ibm.com> | 2017-01-26 09:48:22 -0700 |
|---|---|---|
| committer | scottda <scott.dangelo@ibm.com> | 2017-01-31 09:29:17 -0700 |
| commit | d10b467af4e2aabbd7935ebbe0eeacce2ce533e3 (patch) | |
| tree | 181671133d88a10068a3eaec70e4f495fb8e2fea | |
| parent | 4395dbdda6415b337a41afe5f289281a13465c5d (diff) | |
| download | python-cinderclient-d10b467af4e2aabbd7935ebbe0eeacce2ce533e3.tar.gz | |
static method to get_highest_client_server_version
This method takes a url for the cinder server endpoint and queries
the server for version info. It then returns the min of the server's
highest supported version and the cinderclients MAX_VERSION.
Change-Id: Ifb3478f1dba660a5d75d243dc2aaf6b421940752
| -rw-r--r-- | cinderclient/client.py | 7 | ||||
| -rw-r--r-- | cinderclient/tests/unit/test_client.py | 19 |
2 files changed, 26 insertions, 0 deletions
diff --git a/cinderclient/client.py b/cinderclient/client.py index 298ec94..f6513b6 100644 --- a/cinderclient/client.py +++ b/cinderclient/client.py @@ -97,6 +97,13 @@ def get_server_version(url): return api_versions.APIVersion("2.0"), api_versions.APIVersion("2.0") +def get_highest_client_server_version(url): + min_server, max_server = get_server_version(url) + max_server_version = api_versions.APIVersion.get_string(max_server) + + return min(float(max_server_version), float(api_versions.MAX_VERSION)) + + def get_volume_api_from_url(url): scheme, netloc, path, query, frag = urlparse.urlsplit(url) components = path.split("/") diff --git a/cinderclient/tests/unit/test_client.py b/cinderclient/tests/unit/test_client.py index 7a6588c..0ca0f19 100644 --- a/cinderclient/tests/unit/test_client.py +++ b/cinderclient/tests/unit/test_client.py @@ -332,3 +332,22 @@ class GetAPIVersionTestCase(utils.TestCase): min_version, max_version = cinderclient.client.get_server_version(url) self.assertEqual(min_version, api_versions.APIVersion('3.0')) self.assertEqual(max_version, api_versions.APIVersion('3.16')) + + @mock.patch('cinderclient.client.requests.get') + def test_get_highest_client_server_version(self, mock_request): + + mock_response = utils.TestResponse({ + "status_code": 200, + "text": json.dumps(fakes.fake_request_get()) + }) + + mock_request.return_value = mock_response + + url = "http://192.168.122.127:8776/v3/e5526285ebd741b1819393f772f11fc3" + + highest = cinderclient.client.get_highest_client_server_version(url) + current_client_MAX_VERSION = float(api_versions.MAX_VERSION) + if current_client_MAX_VERSION > 3.16: + self.assertEqual(3.16, highest) + else: + self.assertEqual(current_client_MAX_VERSION, highest) |
