Merge "libvirt: properly decode error message from qemu guest agent"
This commit is contained in:
commit
47bdd10137
@ -1401,6 +1401,26 @@ class LibvirtConnTestCase(test.NoDBTestCase,
|
||||
self.assertRaises(exception.NovaException,
|
||||
drvr.set_admin_password, instance, "123")
|
||||
|
||||
@mock.patch('nova.utils.get_image_from_system_metadata')
|
||||
@mock.patch.object(host.Host,
|
||||
'has_min_version', return_value=True)
|
||||
@mock.patch('nova.virt.libvirt.host.Host.get_guest')
|
||||
def test_set_admin_password_error_with_unicode(
|
||||
self, mock_get_guest, ver, mock_image):
|
||||
self.flags(virt_type='kvm', group='libvirt')
|
||||
instance = objects.Instance(**self.test_instance)
|
||||
mock_image.return_value = {"properties": {
|
||||
"hw_qemu_guest_agent": "yes"}}
|
||||
mock_guest = mock.Mock(spec=libvirt_guest.Guest)
|
||||
mock_guest.set_user_password.side_effect = (
|
||||
fakelibvirt.libvirtError(
|
||||
b"failed: \xe9\x94\x99\xe8\xaf\xaf\xe3\x80\x82"))
|
||||
mock_get_guest.return_value = mock_guest
|
||||
|
||||
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)
|
||||
self.assertRaises(exception.NovaException,
|
||||
drvr.set_admin_password, instance, "123")
|
||||
|
||||
@mock.patch.object(objects.Service, 'save')
|
||||
@mock.patch.object(objects.Service, 'get_by_compute_host')
|
||||
def test_set_host_enabled_with_disable(self, mock_svc, mock_save):
|
||||
|
@ -53,6 +53,7 @@ from oslo_concurrency import processutils
|
||||
from oslo_log import log as logging
|
||||
from oslo_serialization import jsonutils
|
||||
from oslo_service import loopingcall
|
||||
from oslo_utils import encodeutils
|
||||
from oslo_utils import excutils
|
||||
from oslo_utils import fileutils
|
||||
from oslo_utils import importutils
|
||||
@ -1819,9 +1820,10 @@ class LibvirtDriver(driver.ComputeDriver):
|
||||
guest.set_user_password(user, new_pass)
|
||||
except libvirt.libvirtError as ex:
|
||||
error_code = ex.get_error_code()
|
||||
err_msg = encodeutils.exception_to_unicode(ex)
|
||||
msg = (_('Error from libvirt while set password for username '
|
||||
'"%(user)s": [Error Code %(error_code)s] %(ex)s')
|
||||
% {'user': user, 'error_code': error_code, 'ex': ex})
|
||||
% {'user': user, 'error_code': error_code, 'ex': err_msg})
|
||||
raise exception.InternalError(msg)
|
||||
|
||||
def _can_quiesce(self, instance, image_meta):
|
||||
@ -1845,10 +1847,11 @@ class LibvirtDriver(driver.ComputeDriver):
|
||||
guest.thaw_filesystems()
|
||||
except libvirt.libvirtError as ex:
|
||||
error_code = ex.get_error_code()
|
||||
err_msg = encodeutils.exception_to_unicode(ex)
|
||||
msg = (_('Error from libvirt while quiescing %(instance_name)s: '
|
||||
'[Error Code %(error_code)s] %(ex)s')
|
||||
% {'instance_name': instance.name,
|
||||
'error_code': error_code, 'ex': ex})
|
||||
'error_code': error_code, 'ex': err_msg})
|
||||
raise exception.InternalError(msg)
|
||||
|
||||
def quiesce(self, context, instance, image_meta):
|
||||
|
Loading…
x
Reference in New Issue
Block a user