summaryrefslogtreecommitdiff
path: root/nova/utils.py
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-10-30 09:21:45 +0000
committerGerrit Code Review <review@openstack.org>2013-10-30 09:21:45 +0000
commitcd48f06f497a4dcb61a5284cbcfdd207ce5baca6 (patch)
tree9b479e7f4440e7123f4e006a946c8da307840822 /nova/utils.py
parent6a00d4deb07f557b11509b8926f29ec5ca8dd0f6 (diff)
parenta52259ea2dda742d528723d58f20b3b225f1eac5 (diff)
downloadnova-cd48f06f497a4dcb61a5284cbcfdd207ce5baca6.tar.gz
Merge "Adding support for multiple hypervisor versions"
Diffstat (limited to 'nova/utils.py')
-rw-r--r--nova/utils.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/nova/utils.py b/nova/utils.py
index 6f39b48765..b9d8a45fc9 100644
--- a/nova/utils.py
+++ b/nova/utils.py
@@ -1027,7 +1027,28 @@ def is_none_string(val):
def convert_version_to_int(version):
- return version[0] * 1000000 + version[1] * 1000 + version[2]
+ try:
+ if type(version) == str:
+ version = convert_version_to_tuple(version)
+ if type(version) == tuple:
+ return reduce(lambda x, y: (x * 1000) + y, version)
+ except Exception:
+ raise exception.NovaException(message="Hypervisor version invalid.")
+
+
+def convert_version_to_str(version_int):
+ version_numbers = []
+ factor = 1000
+ while version_int != 0:
+ version_number = version_int - (version_int // factor * factor)
+ version_numbers.insert(0, str(version_number))
+ version_int = version_int / factor
+
+ return reduce(lambda x, y: "%s.%s" % (x, y), version_numbers)
+
+
+def convert_version_to_tuple(version_str):
+ return tuple(int(part) for part in version_str.split('.'))
def is_neutron():