Revision 14b5cd0e
b/kamaki/cli/commands/astakos.py | ||
---|---|---|
35 | 35 |
from os.path import abspath |
36 | 36 |
|
37 | 37 |
from kamaki.cli import command |
38 |
from kamaki.clients.astakos import SynnefoAstakosClient
|
|
38 |
from kamaki.clients.astakos import LoggedAstakosClient
|
|
39 | 39 |
from kamaki.cli.commands import ( |
40 | 40 |
_command_init, errors, _optional_json, addLogSettings) |
41 | 41 |
from kamaki.cli.command_tree import CommandTree |
... | ... | |
100 | 100 |
'astakos') or self.config.get_cloud( |
101 | 101 |
self.cloud, 'token') |
102 | 102 |
token = token.split()[0] if ' ' in token else token |
103 |
self.client = SynnefoAstakosClient( |
|
104 |
auth_url=base_url, token=token) |
|
103 |
self.client = LoggedAstakosClient(base_url, token) |
|
105 | 104 |
return |
106 | 105 |
else: |
107 | 106 |
self.cloud = 'default' |
b/kamaki/clients/astakos/__init__.py | ||
---|---|---|
32 | 32 |
# or implied, of GRNET S.A. |
33 | 33 |
|
34 | 34 |
from logging import getLogger |
35 |
from astakosclient import *
|
|
36 |
# astakosclient contains: AstakosCLient, AstakosClientException
|
|
35 |
from astakosclient import AstakosClient as OriginalAstakosClient
|
|
36 |
from astakosclient import AstakosClientException, parse_endpoints
|
|
37 | 37 |
|
38 | 38 |
from kamaki.clients import Client, ClientError, RequestManager, recvlog |
39 | 39 |
|
40 | 40 |
|
41 |
class AstakosClient(OriginalAstakosClient): |
|
42 |
"""Wrap Original AstakosClient to ensure compatibility in kamaki clients""" |
|
43 |
|
|
44 |
def __init__(self, *args, **kwargs): |
|
45 |
if args: |
|
46 |
args = list(args) |
|
47 |
url = args.pop(0) |
|
48 |
token = args.pop(0) if args else kwargs.pop('token', None) |
|
49 |
args = tuple([token, url] + args) |
|
50 |
elif 'base_url' in kwargs: |
|
51 |
kwargs['auth_url'] = kwargs.get('auth_url', kwargs['base_url']) |
|
52 |
super(AstakosClient, self).__init__(*args, **kwargs) |
|
53 |
|
|
41 | 54 |
|
42 | 55 |
def _astakos_error(foo): |
43 | 56 |
def wrap(self, *args, **kwargs): |
... | ... | |
48 | 61 |
return wrap |
49 | 62 |
|
50 | 63 |
|
51 |
class SynnefoAstakosClient(AstakosClient): |
|
52 |
"""An astakosclient.AstakosClient wrapper, that logs the way of kamaki""" |
|
64 |
class LoggedAstakosClient(AstakosClient): |
|
65 |
"""An AstakosClient wrapper with modified logging |
|
66 |
|
|
67 |
Logs are adjusted to appear similar to the ones of kamaki clients. |
|
68 |
No other changes are made to the parent class. |
|
69 |
""" |
|
53 | 70 |
|
54 | 71 |
LOG_TOKEN = False |
55 | 72 |
LOG_DATA = False |
... | ... | |
66 | 83 |
recvlog.info('- - - - - - -') |
67 | 84 |
|
68 | 85 |
def _call_astakos(self, *args, **kwargs): |
69 |
r = super(SynnefoAstakosClient, self)._call_astakos(*args, **kwargs)
|
|
86 |
r = super(LoggedAstakosClient, self)._call_astakos(*args, **kwargs)
|
|
70 | 87 |
try: |
71 | 88 |
log_request = getattr(self, 'log_request', None) |
72 | 89 |
if log_request: |
... | ... | |
129 | 146 |
:param token: (str) custom token to authenticate |
130 | 147 |
""" |
131 | 148 |
token = self._resolve_token(token) |
132 |
astakos = SynnefoAstakosClient(
|
|
133 |
token, self.base_url, logger=getLogger('astakosclient'))
|
|
149 |
astakos = LoggedAstakosClient(
|
|
150 |
self.base_url, token, logger=getLogger('astakosclient'))
|
|
134 | 151 |
astakos.LOG_TOKEN = getattr(self, 'LOG_TOKEN', False) |
135 | 152 |
astakos.LOG_DATA = getattr(self, 'LOG_DATA', False) |
136 | 153 |
r = astakos.authenticate() |
b/kamaki/clients/astakos/test.py | ||
---|---|---|
98 | 98 |
def tearDown(self): |
99 | 99 |
FR.json = example |
100 | 100 |
|
101 |
@patch('%s.LoggedAstakosClient.__init__' % astakos_pkg, return_value=None) |
|
101 | 102 |
@patch( |
102 |
'%s.SynnefoAstakosClient.__init__' % astakos_pkg, return_value=None) |
|
103 |
@patch( |
|
104 |
'%s.SynnefoAstakosClient.get_endpoints' % astakos_pkg, |
|
103 |
'%s.LoggedAstakosClient.get_endpoints' % astakos_pkg, |
|
105 | 104 |
return_value=example) |
106 | 105 |
def _authenticate(self, get_endpoints, sac): |
107 | 106 |
r = self.client.authenticate() |
... | ... | |
187 | 186 |
self.assertEqual(r[0]['auth_token'], self.token) |
188 | 187 |
|
189 | 188 |
@patch( |
190 |
'%s.SynnefoAstakosClient.get_usernames' % astakos_pkg,
|
|
189 |
'%s.LoggedAstakosClient.get_usernames' % astakos_pkg,
|
|
191 | 190 |
return_value={42: 'username42', 43: 'username43'}) |
192 | 191 |
def test_uuids2usernames(self, get_usernames): |
193 | 192 |
from astakosclient import AstakosClientException |
194 | 193 |
self.assertRaises( |
195 | 194 |
AstakosClientException, self.client.uuids2usernames, [42, 43]) |
196 | 195 |
with patch( |
197 |
'%s.SynnefoAstakosClient.__init__' % astakos_pkg,
|
|
196 |
'%s.LoggedAstakosClient.__init__' % astakos_pkg,
|
|
198 | 197 |
return_value=None) as sac: |
199 | 198 |
with patch( |
200 |
'%s.SynnefoAstakosClient.get_endpoints' % astakos_pkg,
|
|
199 |
'%s.LoggedAstakosClient.get_endpoints' % astakos_pkg,
|
|
201 | 200 |
return_value=example) as get_endpoints: |
202 | 201 |
r = self.client.uuids2usernames([42, 43]) |
203 | 202 |
self.assert_dicts_are_equal( |
... | ... | |
208 | 207 |
self.assertEqual(get_usernames.mock_calls[-1], call([42, 43])) |
209 | 208 |
|
210 | 209 |
@patch( |
211 |
'%s.SynnefoAstakosClient.get_uuids' % astakos_pkg,
|
|
210 |
'%s.LoggedAstakosClient.get_uuids' % astakos_pkg,
|
|
212 | 211 |
return_value={'username42': 42, 'username43': 43}) |
213 | 212 |
def test_usernames2uuids(self, get_uuids): |
214 | 213 |
from astakosclient import AstakosClientException |
215 | 214 |
self.assertRaises( |
216 | 215 |
AstakosClientException, self.client.usernames2uuids, ['u1', 'u2']) |
217 | 216 |
with patch( |
218 |
'%s.SynnefoAstakosClient.__init__' % astakos_pkg,
|
|
217 |
'%s.LoggedAstakosClient.__init__' % astakos_pkg,
|
|
219 | 218 |
return_value=None) as sac: |
220 | 219 |
with patch( |
221 |
'%s.SynnefoAstakosClient.get_endpoints' % astakos_pkg,
|
|
220 |
'%s.LoggedAstakosClient.get_endpoints' % astakos_pkg,
|
|
222 | 221 |
return_value=example) as get_endpoints: |
223 | 222 |
r = self.client.usernames2uuids(['u1', 'u2']) |
224 | 223 |
self.assert_dicts_are_equal( |
Also available in: Unified diff