diff options
Diffstat (limited to 'swiftclient/exceptions.py')
-rw-r--r-- | swiftclient/exceptions.py | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/swiftclient/exceptions.py b/swiftclient/exceptions.py index da70379..a9b993c 100644 --- a/swiftclient/exceptions.py +++ b/swiftclient/exceptions.py @@ -35,6 +35,13 @@ class ClientException(Exception): self.http_response_content = http_response_content self.http_response_headers = http_response_headers + self.transaction_id = None + if self.http_response_headers: + for header in ('X-Trans-Id', 'X-Openstack-Request-Id'): + if header in self.http_response_headers: + self.transaction_id = self.http_response_headers[header] + break + @classmethod def from_response(cls, resp, msg=None, body=None): msg = msg or '%s %s' % (resp.status_code, resp.reason) @@ -78,4 +85,7 @@ class ClientException(Exception): else: b += ' [first 60 chars of response] %s' \ % self.http_response_content[:60] - return b and '%s: %s' % (a, b) or a + c = '' + if self.transaction_id: + c = ' (txn: %s)' % self.transaction_id + return b and '%s: %s%s' % (a, b, c) or (a + c) |