Merge "Setting the xen vm device id on vm record"

This commit is contained in:
Jenkins 2013-12-23 16:03:50 +00:00 committed by Gerrit Code Review
commit c9ba04b7d1
4 changed files with 14 additions and 34 deletions

View File

@ -909,17 +909,3 @@ class VersionTestCase(test.NoDBTestCase):
def test_convert_version_to_tuple(self):
self.assertEqual(utils.convert_version_to_tuple('6.7.0'), (6, 7, 0))
def test_get_major_minor_version_from_string(self):
self.assertEqual(utils.get_major_minor_version('6.1.3'), 6.1)
self.assertEqual(utils.get_major_minor_version('6.4'), 6.4)
self.assertEqual(utils.get_major_minor_version('6'), 6)
def test_get_major_minor_version_from_float(self):
self.assertEqual(utils.get_major_minor_version(6.1), 6.1)
self.assertEqual(utils.get_major_minor_version(6), 6.0)
def test_get_major_minor_version_raises_exception(self):
exc = self.assertRaises(exception.NovaException,
utils.get_major_minor_version, '5a.6b')
self.assertEqual("Version 5a.6b invalid", exc.message)

View File

@ -1825,27 +1825,32 @@ class DeviceIdTestCase(VMUtilsTestBase):
def test_device_id_is_none_if_not_specified_in_meta_data(self):
image_meta = {}
session = mock.Mock()
session.product_version = '6.1'
session.product_version = (6, 1, 0)
self.assertIsNone(vm_utils.get_vm_device_id(session, image_meta))
def test_get_device_id_if_hypervisor_version_is_greater_than_6_1(self):
image_meta = {'xenapi_device_id': '0002'}
session = mock.Mock()
session.product_version = '6.2'
session.product_version = (6, 2, 0)
self.assertEqual('0002',
vm_utils.get_vm_device_id(session, image_meta))
session.product_version = '6.3.1'
session.product_version = (6, 3, 1)
self.assertEqual('0002',
vm_utils.get_vm_device_id(session, image_meta))
def test_raise_exception_if_device_id_not_supported_by_hyp_version(self):
image_meta = {'xenapi_device_id': '0002'}
session = mock.Mock()
session.product_version = '6.0'
session.product_version = (6, 0)
exc = self.assertRaises(exception.NovaException,
vm_utils.get_vm_device_id, session, image_meta)
vm_utils.get_vm_device_id, session, image_meta)
self.assertEqual("Device id 0002 specified is not supported by "
"hypervisor version 6.0", exc.message)
"hypervisor version (6, 0)", exc.message)
session.product_version = ('6a')
exc = self.assertRaises(exception.NovaException,
vm_utils.get_vm_device_id, session, image_meta)
self.assertEqual("Device id 0002 specified is not supported by "
"hypervisor version 6a", exc.message)
class CreateVmRecordTestCase(VMUtilsTestBase):

View File

@ -1034,18 +1034,6 @@ def convert_version_to_tuple(version_str):
return tuple(int(part) for part in version_str.split('.'))
def get_major_minor_version(version):
try:
if type(version) == int or type(version) == float:
return version
if type(version) == str:
major_minor_versions = version.split(".")[0:2]
version_as_float = float(".".join(major_minor_versions))
return version_as_float
except Exception:
raise exception.NovaException(_("Version %s invalid") % version)
def is_neutron():
global _IS_NEUTRON_ATTEMPTED
global _IS_NEUTRON

View File

@ -47,6 +47,7 @@ from nova.openstack.common import log as logging
from nova.openstack.common import processutils
from nova.openstack.common import strutils
from nova.openstack.common import timeutils
from nova.openstack.common import versionutils
from nova.openstack.common import xmlutils
from nova import unit
from nova import utils
@ -238,8 +239,8 @@ def get_vm_device_id(session, image_properties):
def _hypervisor_supports_device_id(version):
hypervisor_major_minor_version = utils.get_major_minor_version(version)
return(hypervisor_major_minor_version >= 6.1)
version_as_string = '.'.join(str(v) for v in version)
return(versionutils.is_compatible('6.1', version_as_string))
def create_vm(session, instance, name_label, kernel, ramdisk,