Revision 8b4ba753 kamaki/clients/astakos/__init__.py
b/kamaki/clients/astakos/__init__.py | ||
---|---|---|
38 | 38 |
from kamaki.clients import Client, ClientError, RequestManager, recvlog |
39 | 39 |
|
40 | 40 |
|
41 |
class AstakosClientError(AstakosClientException, ClientError): |
|
42 |
"""Join AstakosClientException as ClientError in one class""" |
|
43 |
|
|
44 |
|
|
45 |
def _astakos_error(foo): |
|
46 |
def wrap(self, *args, **kwargs): |
|
47 |
try: |
|
48 |
return foo(self, *args, **kwargs) |
|
49 |
except AstakosClientException as sace: |
|
50 |
raise AstakosClientError('%s' % sace, sace.status, sace.details) |
|
51 |
return wrap |
|
52 |
|
|
53 |
|
|
41 | 54 |
class AstakosClient(OriginalAstakosClient): |
42 | 55 |
"""Wrap Original AstakosClient to ensure compatibility in kamaki clients""" |
43 | 56 |
|
57 |
@_astakos_error |
|
44 | 58 |
def __init__(self, *args, **kwargs): |
45 | 59 |
if args: |
46 | 60 |
args = list(args) |
... | ... | |
64 | 78 |
return self.user_info[term] |
65 | 79 |
|
66 | 80 |
|
67 |
def _astakos_error(foo): |
|
68 |
def wrap(self, *args, **kwargs): |
|
69 |
try: |
|
70 |
return foo(self, *args, **kwargs) |
|
71 |
except AstakosClientException as sace: |
|
72 |
self._raise_for_status(sace) |
|
73 |
return wrap |
|
81 |
# Wrap AstakosClient public methods to raise AstakosClientError |
|
82 |
from inspect import getmembers |
|
83 |
for m in getmembers(AstakosClient): |
|
84 |
if hasattr(m[1], '__call__') and not ('%s' % m[0]).startswith('_'): |
|
85 |
setattr(AstakosClient, m[0], _astakos_error(m[1])) |
|
74 | 86 |
|
75 | 87 |
|
76 | 88 |
class LoggedAstakosClient(AstakosClient): |
Also available in: Unified diff