summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-01-12 18:08:33 +0000
committerGerrit Code Review <review@openstack.org>2018-01-12 18:08:33 +0000
commita91f2e4623057a05d402cd4dfe46cd169f2d8a78 (patch)
tree0ec52309bd492dd649bb772fe909fa940b2da0bd
parent0f50db33ae2fbd34ab91bfa4092fd847567dffab (diff)
parent387006e1ffdd4c2aeae9f1af87dd3b794d5945fb (diff)
downloadpython-ironicclient-a91f2e4623057a05d402cd4dfe46cd169f2d8a78.tar.gz
Merge "Use StrictVersion to compare versions"
-rw-r--r--ironicclient/common/http.py2
-rw-r--r--ironicclient/tests/unit/common/test_http.py17
2 files changed, 18 insertions, 1 deletions
diff --git a/ironicclient/common/http.py b/ironicclient/common/http.py
index 2a62a46..b785725 100644
--- a/ironicclient/common/http.py
+++ b/ironicclient/common/http.py
@@ -139,7 +139,7 @@ class VersionNegotiationMixin(object):
negotiated_ver = str(min(StrictVersion(self.os_ironic_api_version),
StrictVersion(max_ver)))
- if negotiated_ver < min_ver:
+ if StrictVersion(negotiated_ver) < StrictVersion(min_ver):
negotiated_ver = min_ver
# server handles microversions, but doesn't support
# the requested version, so try a negotiated version
diff --git a/ironicclient/tests/unit/common/test_http.py b/ironicclient/tests/unit/common/test_http.py
index 0da706a..3ac0269 100644
--- a/ironicclient/tests/unit/common/test_http.py
+++ b/ironicclient/tests/unit/common/test_http.py
@@ -183,6 +183,23 @@ class VersionNegotiationMixinTest(utils.BaseTestCase):
self.assertEqual(1, mock_pvh.call_count)
self.assertEqual(0, mock_save_data.call_count)
+ @mock.patch.object(filecache, 'save_data', autospec=True)
+ @mock.patch.object(http.VersionNegotiationMixin, '_parse_version_headers',
+ autospec=True)
+ def test_negotiate_version_strict_version_comparison(self, mock_pvh,
+ mock_save_data):
+ # Test version comparison with StrictVersion
+ max_ver = '1.10'
+ mock_pvh.return_value = ('1.2', max_ver)
+ mock_conn = mock.MagicMock()
+ self.test_object.os_ironic_api_version = '1.10'
+ result = self.test_object.negotiate_version(mock_conn, self.response)
+ self.assertEqual(max_ver, result)
+ self.assertEqual(1, mock_pvh.call_count)
+ host, port = http.get_server(self.test_object.endpoint)
+ mock_save_data.assert_called_once_with(host=host, port=port,
+ data=max_ver)
+
def test_get_server(self):
host = 'ironic-host'
port = '6385'