Merge "Setting the xen vm device id on vm record"
This commit is contained in:
commit
c9ba04b7d1
@ -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)
|
||||
|
@ -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):
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user