In the compute manager's 'retry' logic (i.e., handling RescheduledException) in _build_and_run_instance, it has a catch-all case for all exceptions and sets reason=str(e). This works well in most cases, but for cases in which lower level code may generate locale-specific messages, it's possible to see the "UnicodeEncodeError: 'ascii' codec can't encode character..." error, which ultimately masks the message in the compute logs, etc.
It also means the instance won't be rescheduled as it fails with an error similar to...
WARNING nova.compute.manager [req-7fe662b1-c947-4303-b43f-114fbdafe875 None] [instance: 333474eb-dd07-4e05-b920-787da0fd5b32] Unexpected build failure, not rescheduling build.
(i.e., as a result of the UnicodeEncodeError previously mentioned)
The simple solution is to use six.text_type(e) instead of str(e).
Looks like the review is this one - https:/ /review. openstack. org/#/c/ 115846/