From fd0e1175795ac3a5497dcf72ed250077abaf2ed1 Mon Sep 17 00:00:00 2001 From: Flaper Fesp Date: Thu, 11 Jul 2013 15:28:49 +0200 Subject: Encode error messages before sending them to stdout When an error with non-ascii characters is caught by glanceclient, it fails at printing it and exists with a UnicodeEncodedError. This patch encodes errors' messages using strutils before sending them to stdout. Fixes bug: #1200206 Change-Id: I4dabcd76ffb258840bd6a66ad23c030f34960e86 --- glanceclient/common/utils.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'glanceclient/common/utils.py') diff --git a/glanceclient/common/utils.py b/glanceclient/common/utils.py index 49976ac..c0e65db 100644 --- a/glanceclient/common/utils.py +++ b/glanceclient/common/utils.py @@ -202,3 +202,15 @@ def getsockopt(self, *args, **kwargs): lands in mainstream packages. """ return self.fd.getsockopt(*args, **kwargs) + + +def exception_to_str(exc): + try: + error = unicode(exc) + except UnicodeError: + try: + error = str(exc) + except UnicodeError: + error = ("Caught '%(exception)s' exception." % + {"exception": exc.__class__.__name__}) + return strutils.safe_encode(error, errors='ignore') -- cgit v1.2.1