In virtuozzo 7 we have changed disk bus from sata to scsi.
Sata is not supported in virtuozzo 7.
We don't need to support sata bus for virtuozzo in nova.
Virtuozzo 6 may work with python 2.6 only and
it's not possible to run upstream nova on virtuozzo 6.
We always use this patch in our internal infrastructure
to run openstack on virtuozzo 7.
Also in this patch we have changed tests for hypervisor version.
We don't need to check libvirt version in case of Virtuozzo hypervisor.
Because Virtuozzo 7 always has libvirt with
support of 'parallels' virt type.
Docs have already been updated:
If3d2f402bb1b21bec360693a6c1e9d73e998d167
Change-Id: If3d5e39bd745c0df74316a90159fffb3221864cc
self.assertEqual(res, bus)
expected = (
- ('scsi', None, 'disk', 'scsi'),
- (None, 'scsi', 'cdrom', 'scsi'),
- ('usb', None, 'disk', 'usb')
+ ('kvm', 'scsi', None, 'disk', 'scsi'),
+ ('kvm', None, 'scsi', 'cdrom', 'scsi'),
+ ('kvm', 'usb', None, 'disk', 'usb'),
+ ('parallels', 'scsi', None, 'disk', 'scsi'),
+ ('parallels', None, None, 'disk', 'scsi'),
+ ('parallels', None, 'ide', 'cdrom', 'ide'),
+ ('parallels', None, None, 'cdrom', 'ide')
)
- for dbus, cbus, dev, res in expected:
+ for hv, dbus, cbus, dev, res in expected:
props = {}
if dbus is not None:
props['hw_disk_bus'] = dbus
image_meta = objects.ImageMeta.from_dict(
{'properties': props})
bus = blockinfo.get_disk_bus_for_device_type(
- instance, 'kvm', image_meta, device_type=dev)
+ instance, hv, image_meta, device_type=dev)
self.assertEqual(res, bus)
image_meta = objects.ImageMeta.from_dict(
string_ver = driver._version_to_string((4, 33, 173))
self.assertEqual("4.33.173", string_ver)
- def test_parallels_min_version_fail(self):
+ def test_virtuozzo_min_version_fail(self):
self.flags(virt_type='parallels', group='libvirt')
driver = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
- with mock.patch.object(driver._conn, 'getLibVersion',
- return_value=1002011):
+ with test.nested(
+ mock.patch.object(
+ driver._conn, 'getVersion'),
+ mock.patch.object(
+ driver._conn, 'getLibVersion'))\
+ as (mock_getver, mock_getlibver):
+ mock_getver.return_value = \
+ versionutils.convert_version_to_int(
+ libvirt_driver.MIN_VIRTUOZZO_VERSION) - 1
+ mock_getlibver.return_value = \
+ versionutils.convert_version_to_int(
+ libvirt_driver.MIN_LIBVIRT_VIRTUOZZO_VERSION)
+
+ self.assertRaises(exception.NovaException,
+ driver.init_host, 'wibble')
+
+ mock_getver.return_value = \
+ versionutils.convert_version_to_int(
+ libvirt_driver.MIN_VIRTUOZZO_VERSION)
+ mock_getlibver.return_value = \
+ versionutils.convert_version_to_int(
+ libvirt_driver.MIN_LIBVIRT_VIRTUOZZO_VERSION) - 1
+
self.assertRaises(exception.NovaException,
driver.init_host, 'wibble')
- def test_parallels_min_version_ok(self):
+ def test_virtuozzo_min_version_ok(self):
self.flags(virt_type='parallels', group='libvirt')
driver = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
- with mock.patch.object(driver._conn, 'getLibVersion',
- return_value=1002012):
+ with test.nested(
+ mock.patch.object(
+ driver._conn, 'getVersion'),
+ mock.patch.object(
+ driver._conn, 'getLibVersion'))\
+ as (mock_getver, mock_getlibver):
+ mock_getver.return_value = \
+ versionutils.convert_version_to_int(
+ libvirt_driver.MIN_VIRTUOZZO_VERSION)
+ mock_getlibver.return_value = \
+ versionutils.convert_version_to_int(
+ libvirt_driver.MIN_LIBVIRT_VIRTUOZZO_VERSION)
+
driver.init_host('wibble')
def test_get_guest_config_parallels_vm(self):
'xen': ['xen', 'ide'],
'uml': ['uml'],
'lxc': ['lxc'],
- 'parallels': ['ide', 'scsi', 'sata']
+ 'parallels': ['ide', 'scsi']
}
if virt_type not in valid_bus:
if device_type == "cdrom":
return "ide"
elif device_type == "disk":
- return "sata"
+ return "scsi"
else:
# If virt-type not in list then it is unsupported
raise exception.UnsupportedVirtType(virt=virt_type)
# this picks the most likely mappings
if virt_type == "xen":
return "xen"
- elif virt_type == "parallels":
- return "sata"
else:
return "scsi"
elif disk_dev.startswith('vd'):
MIN_LIBVIRT_HYPERV_TIMER_VERSION = (1, 2, 2)
MIN_QEMU_HYPERV_TIMER_VERSION = (2, 0, 0)
-# parallels driver support
-MIN_LIBVIRT_PARALLELS_VERSION = (1, 2, 12)
+# Virtuozzo driver support
+MIN_VIRTUOZZO_VERSION = (7, 0, 0)
+MIN_LIBVIRT_VIRTUOZZO_VERSION = (1, 2, 12)
# Ability to set the user guest password with Qemu
MIN_LIBVIRT_SET_ADMIN_PASSWD = (1, 2, 16)
_('Nova requires QEMU version %s or greater.') %
self._version_to_string(MIN_QEMU_VERSION))
- if (CONF.libvirt.virt_type == 'parallels' and
- not self._host.has_min_version(MIN_LIBVIRT_PARALLELS_VERSION)):
- raise exception.NovaException(
- _('Running Nova with parallels virt_type requires '
- 'libvirt version %s') %
- self._version_to_string(MIN_LIBVIRT_PARALLELS_VERSION))
+ if CONF.libvirt.virt_type == 'parallels':
+ if not self._host.has_min_version(hv_ver=MIN_VIRTUOZZO_VERSION):
+ raise exception.NovaException(
+ _('Nova requires Virtuozzo version %s or greater.') %
+ self._version_to_string(MIN_VIRTUOZZO_VERSION))
+ if not self._host.has_min_version(MIN_LIBVIRT_VIRTUOZZO_VERSION):
+ raise exception.NovaException(
+ _('Running Nova with parallels virt_type requires '
+ 'libvirt version %s') %
+ self._version_to_string(MIN_LIBVIRT_VIRTUOZZO_VERSION))
# Give the cloud admin a heads up if we are intending to
# change the MIN_LIBVIRT_VERSION in the next release.
--- /dev/null
+---
+upgrade:
+ - As of Ocata, the minimum version of Virtuozzo that nova compute will
+ interoperate with will be 7.0.0. Deployments using older versions of
+ Virtuozzo should upgrade.