diff --git a/nova/tests/unit/virt/test_virt_drivers.py b/nova/tests/unit/virt/test_virt_drivers.py index c3a95251a2b2..f57958f7af99 100644 --- a/nova/tests/unit/virt/test_virt_drivers.py +++ b/nova/tests/unit/virt/test_virt_drivers.py @@ -805,6 +805,18 @@ class _VirtDriverTestCase(_FakeDriverBackendTestCase): self.connection.emit_event(event1) + def test_emit_unicode_event(self): + """Tests that we do not fail on translated unicode events.""" + started_event = virtevent.LifecycleEvent( + "cef19ce0-0ca2-11df-855d-b19fbce37686", + virtevent.EVENT_LIFECYCLE_STARTED) + callback = mock.Mock() + self.connection.register_event_listener(callback) + with mock.patch.object(started_event, 'get_name', + return_value=u'\xF0\x9F\x92\xA9'): + self.connection.emit_event(started_event) + callback.assert_called_once_with(started_event) + def test_set_bootable(self): self.assertRaises(NotImplementedError, self.connection.set_bootable, 'instance', True) diff --git a/nova/virt/driver.py b/nova/virt/driver.py index ef8272712476..fd0be49ad678 100644 --- a/nova/virt/driver.py +++ b/nova/virt/driver.py @@ -24,6 +24,7 @@ import sys from oslo_log import log as logging from oslo_utils import importutils +import six import nova.conf from nova.i18n import _, _LE, _LI @@ -1432,7 +1433,7 @@ class ComputeDriver(object): """ if not self._compute_event_callback: - LOG.debug("Discarding event %s", str(event)) + LOG.debug("Discarding event %s", six.text_type(event)) return if not isinstance(event, virtevent.Event): @@ -1440,7 +1441,7 @@ class ComputeDriver(object): _("Event must be an instance of nova.virt.event.Event")) try: - LOG.debug("Emitting event %s", str(event)) + LOG.debug("Emitting event %s", six.text_type(event)) self._compute_event_callback(event) except Exception as ex: LOG.error(_LE("Exception dispatching event %(event)s: %(ex)s"),