Mistral doesn't raise unpredictable errors if error is thrown from engine via oslo.messaging to API.
When engine raises some error, oslo.messaging wraps it in messaging.rpc.client.RemoteError and transfers back to API. This transferred info contains only error class name and error text. Then we need to unwrap RemoteError and raise the real exception. A bit earlier we
assumed that all the errors should be at least MistralException (from module mistral.exceptions) but it seems engine can raise anything error, say, one of builtin exceptions - e.g. AttributeError. Need to see what error is come, check for it existing and raise it.
Mistral tries to find given wrapped error in exceptions package but it is not in it, so mistral in this case raises 'Attribute error: No such attribute <exception class>'
Fix proposed to branch: master /review. openstack. org/225587
Review: https:/