diff options
author | Jenkins <jenkins@review.openstack.org> | 2013-10-30 09:21:45 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2013-10-30 09:21:45 +0000 |
commit | cd48f06f497a4dcb61a5284cbcfdd207ce5baca6 (patch) | |
tree | 9b479e7f4440e7123f4e006a946c8da307840822 /nova/utils.py | |
parent | 6a00d4deb07f557b11509b8926f29ec5ca8dd0f6 (diff) | |
parent | a52259ea2dda742d528723d58f20b3b225f1eac5 (diff) | |
download | nova-cd48f06f497a4dcb61a5284cbcfdd207ce5baca6.tar.gz |
Merge "Adding support for multiple hypervisor versions"
Diffstat (limited to 'nova/utils.py')
-rw-r--r-- | nova/utils.py | 23 |
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(): |