Merge "libvirt: Remove unnecessary try-catch around 'getCPUMap'"
This commit is contained in:
@@ -7466,32 +7466,6 @@ class LibvirtConnTestCase(test.NoDBTestCase,
|
||||
get_online_cpus.return_value = set([4, 5])
|
||||
self.assertRaises(exception.Invalid, drvr._get_vcpu_total)
|
||||
|
||||
@mock.patch('nova.virt.libvirt.host.Host.get_online_cpus')
|
||||
def test_get_host_vcpus_libvirt_error(self, get_online_cpus):
|
||||
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
|
||||
not_supported_exc = fakelibvirt.make_libvirtError(
|
||||
fakelibvirt.libvirtError,
|
||||
'this function is not supported by the connection driver:'
|
||||
' virNodeNumOfDevices',
|
||||
error_code=fakelibvirt.VIR_ERR_NO_SUPPORT)
|
||||
self.flags(vcpu_pin_set="4-6")
|
||||
get_online_cpus.side_effect = not_supported_exc
|
||||
self.assertRaises(exception.Invalid, drvr._get_vcpu_total)
|
||||
|
||||
@mock.patch('nova.virt.libvirt.host.Host.get_online_cpus')
|
||||
def test_get_host_vcpus_libvirt_error_success(self, get_online_cpus):
|
||||
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
|
||||
not_supported_exc = fakelibvirt.make_libvirtError(
|
||||
fakelibvirt.libvirtError,
|
||||
'this function is not supported by the connection driver:'
|
||||
' virNodeNumOfDevices',
|
||||
error_code=fakelibvirt.VIR_ERR_NO_SUPPORT)
|
||||
self.flags(vcpu_pin_set="1")
|
||||
get_online_cpus.side_effect = not_supported_exc
|
||||
expected_vcpus = 1
|
||||
vcpus = drvr._get_vcpu_total()
|
||||
self.assertEqual(expected_vcpus, vcpus)
|
||||
|
||||
@mock.patch('nova.virt.libvirt.host.Host.get_cpu_count')
|
||||
def test_get_host_vcpus_after_hotplug(self, get_cpu_count):
|
||||
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
|
||||
|
||||
@@ -5858,29 +5858,15 @@ class LibvirtDriver(driver.ComputeDriver):
|
||||
return total_pcpus
|
||||
|
||||
available_ids = hardware.get_vcpu_pin_set()
|
||||
# We get the list of online CPUs on the host and see if the requested
|
||||
# set falls under these. If not, we retain the old behavior.
|
||||
online_pcpus = None
|
||||
try:
|
||||
online_pcpus = self._host.get_online_cpus()
|
||||
except libvirt.libvirtError as ex:
|
||||
error_code = ex.get_error_code()
|
||||
err_msg = encodeutils.exception_to_unicode(ex)
|
||||
LOG.warning(
|
||||
"Couldn't retrieve the online CPUs due to a Libvirt "
|
||||
"error: %(error)s with error code: %(error_code)s",
|
||||
{'error': err_msg, 'error_code': error_code})
|
||||
if online_pcpus:
|
||||
if not (available_ids <= online_pcpus):
|
||||
msg = (_("Invalid vcpu_pin_set config, one or more of the "
|
||||
"specified cpuset is not online. Online cpuset(s): "
|
||||
"%(online)s, requested cpuset(s): %(req)s"),
|
||||
{'online': sorted(online_pcpus),
|
||||
'req': sorted(available_ids)})
|
||||
raise exception.Invalid(msg)
|
||||
elif sorted(available_ids)[-1] >= total_pcpus:
|
||||
raise exception.Invalid(_("Invalid vcpu_pin_set config, "
|
||||
"out of hypervisor cpu range."))
|
||||
online_pcpus = self._host.get_online_cpus()
|
||||
if not (available_ids <= online_pcpus):
|
||||
msg = _("Invalid 'vcpu_pin_set' config: one or more of the "
|
||||
"requested CPUs is not online. Online cpuset(s): "
|
||||
"%(online)s, requested cpuset(s): %(req)s")
|
||||
raise exception.Invalid(msg % {
|
||||
'online': sorted(online_pcpus),
|
||||
'req': sorted(available_ids)})
|
||||
|
||||
return len(available_ids)
|
||||
|
||||
@staticmethod
|
||||
|
||||
Reference in New Issue
Block a user