Add version compare function

Add version compare function for xcat and requested version
so, functions not supported by future release of xcat
will use old version interface.

Change-Id: I22927e7aad338b11f850787d87ea2f211c90dd28
This commit is contained in:
jichenjc
2015-11-05 11:20:58 +08:00
parent 056c72d518
commit f46c3ec9ca
2 changed files with 37 additions and 0 deletions

View File

@@ -1590,6 +1590,26 @@ class ZVMDriverTestCases(ZVMTestCase):
version = self.driver._get_xcat_version()
self.assertEqual(version, 2008003005)
@mock.patch('nova.virt.zvm.driver.ZVMDriver._get_xcat_version')
def test_has_min_version(self, fake_xcat_ver):
fake_xcat_ver.return_value = 1002003004
self.assertFalse(self.driver.has_min_version((1, 3, 3, 4)))
self.assertTrue(self.driver.has_min_version((1, 1, 3, 5)))
self.assertTrue(self.driver.has_min_version(None))
@mock.patch('nova.virt.zvm.driver.ZVMDriver._get_xcat_version')
def test_has_version(self, fake_xcat_ver):
fake_xcat_ver.return_value = 1002003004
xcat_ver = (1, 2, 3, 4)
self.assertTrue(self.driver.has_version(xcat_ver))
for xcat_ver_ in [(1, 1, 3, 4), (1, 3, 3, 2)]:
self.assertFalse(self.driver.has_version(xcat_ver_))
self.assertTrue(self.driver.has_version(None))
class ZVMInstanceTestCases(ZVMTestCase):
"""Test cases for zvm.instance."""

View File

@@ -14,6 +14,7 @@
import contextlib
import datetime
import operator
import os
import time
import uuid
@@ -2000,3 +2001,19 @@ class ZVMDriver(driver.ComputeDriver):
version = dict_str.split()[1]
version = versionutils.convert_version_to_int(version)
return version
def _version_check(self, req_ver=None, op=operator.lt):
try:
if req_ver is not None:
cur_ver = self._get_xcat_version()
if op(cur_ver, versionutils.convert_version_to_int(req_ver)):
return False
return True
except Exception:
return False
def has_min_version(self, req_ver=None):
return self._version_check(req_ver=req_ver, op=operator.lt)
def has_version(self, req_ver=None):
return self._version_check(req_ver=req_ver, op=operator.ne)