Revision 468ba00b
b/snf-cyclades-app/setup.py | ||
---|---|---|
76 | 76 |
'setproctitle>=1.0.1', |
77 | 77 |
'bitarray>=0.8', |
78 | 78 |
'objpool>=0.2', |
79 |
'astakosclient', |
|
79 | 80 |
'snf-django-lib' |
80 | 81 |
] |
81 | 82 |
|
b/snf-cyclades-app/synnefo/helpdesk/tests.py | ||
---|---|---|
51 | 51 |
|
52 | 52 |
from synnefo.db import models_factory as mfactory |
53 | 53 |
|
54 |
|
|
55 |
class AstakosClientMock(): |
|
56 |
def __init__(*args, **kwargs): |
|
57 |
pass |
|
58 |
|
|
59 |
def get_username(self, token, uuid): |
|
60 |
try: |
|
61 |
return USERS_UUIDS.get(uuid)['displayname'] |
|
62 |
except TypeError: |
|
63 |
return None |
|
64 |
|
|
65 |
def get_uuid(self, token, display_name): |
|
66 |
try: |
|
67 |
return USERS_DISPLAYNAMES.get(display_name)['uuid'] |
|
68 |
except TypeError: |
|
69 |
return None |
|
70 |
|
|
71 |
|
|
54 | 72 |
class AuthClient(Client): |
55 | 73 |
|
56 | 74 |
def request(self, **request): |
... | ... | |
79 | 97 |
'helpdesk'], |
80 | 98 |
'auth_token': '0001'} |
81 | 99 |
|
82 |
def get_uuid_mock(token, displayname, url): |
|
83 |
try: |
|
84 |
return USERS_DISPLAYNAMES.get(displayname)['uuid'] |
|
85 |
except TypeError: |
|
86 |
return None |
|
87 |
|
|
88 |
def get_displayname_mock(token, uuid, url): |
|
89 |
try: |
|
90 |
return USERS_UUIDS.get(uuid)['displayname'] |
|
91 |
except TypeError: |
|
92 |
return None |
|
93 |
|
|
94 | 100 |
# mock the astakos authentication function |
95 | 101 |
from snf_django.lib import astakos |
96 | 102 |
astakos.get_user = get_user_mock |
97 |
astakos.get_displayname = get_displayname_mock
|
|
98 |
astakos.get_user_uuid = get_uuid_mock
|
|
103 |
import astakosclient
|
|
104 |
astakosclient.AstakosClient = AstakosClientMock
|
|
99 | 105 |
|
100 | 106 |
settings.SKIP_SSH_VALIDATION = True |
101 | 107 |
settings.HELPDESK_ENABLED = True |
b/snf-cyclades-app/synnefo/helpdesk/views.py | ||
---|---|---|
45 | 45 |
|
46 | 46 |
from snf_django.lib.astakos import get_user |
47 | 47 |
from synnefo.db.models import VirtualMachine, NetworkInterface, Network |
48 |
from snf_django.lib import astakos
|
|
48 |
from astakosclient import AstakosClient
|
|
49 | 49 |
|
50 | 50 |
# server actions specific imports |
51 | 51 |
from synnefo.api import servers |
... | ... | |
58 | 58 |
VM_SEARCH_REGEX = re.compile('vm(-){0,}(?P<vmid>[0-9]+)') |
59 | 59 |
|
60 | 60 |
|
61 |
|
|
62 | 61 |
def get_token_from_cookie(request, cookiename): |
63 | 62 |
""" |
64 | 63 |
Extract token from the cookie name provided. Cookie should be in the same |
... | ... | |
81 | 80 |
PERMITTED_GROUPS = getattr(settings, 'HELPDESK_PERMITTED_GROUPS', ['helpdesk']) |
82 | 81 |
SHOW_DELETED_VMS = getattr(settings, 'HELPDESK_SHOW_DELETED_VMS', False) |
83 | 82 |
|
84 |
# guess cyclades setting too |
|
85 |
USER_CATALOG_URL = getattr(settings, 'CYCLADES_USER_CATALOG_URL', None) |
|
86 |
USER_CATALOG_URL = getattr(settings, 'HELPDESK_USER_CATALOG_URL', |
|
87 |
USER_CATALOG_URL) |
|
88 |
|
|
89 | 83 |
|
90 | 84 |
def token_check(func): |
91 | 85 |
""" |
... | ... | |
115 | 109 |
raise Http404 |
116 | 110 |
|
117 | 111 |
token = get_token_from_cookie(request, AUTH_COOKIE_NAME) |
118 |
get_user(request, settings.ASTAKOS_URL, fallback_token=token) |
|
112 |
get_user(request, settings.ASTAKOS_URL, |
|
113 |
fallback_token=token, logger=logger) |
|
119 | 114 |
if hasattr(request, 'user') and request.user: |
120 | 115 |
groups = request.user.get('groups', []) |
121 | 116 |
|
... | ... | |
199 | 194 |
account = None |
200 | 195 |
search_query = vmid |
201 | 196 |
|
197 |
astakos = AstakosClient(settings.ASTAKOS_URL, retry=2, |
|
198 |
use_pool=True, logger=logger) |
|
199 |
|
|
202 | 200 |
if is_uuid: |
203 | 201 |
account = search_query |
204 |
account_name = astakos.get_displayname(auth_token, account, |
|
205 |
USER_CATALOG_URL) |
|
202 |
account_name = astakos.get_username(auth_token, account) |
|
206 | 203 |
|
207 | 204 |
if account_exists and not is_uuid: |
208 | 205 |
account_name = search_query |
209 |
account = astakos.get_user_uuid(auth_token, account_name, |
|
210 |
USER_CATALOG_URL) |
|
206 |
account = astakos.get_uuid(auth_token, account_name) |
|
211 | 207 |
|
212 | 208 |
if not account: |
213 | 209 |
account_exists = False |
b/snf-cyclades-app/synnefo/ui/views.py | ||
---|---|---|
256 | 256 |
|
257 | 257 |
|
258 | 258 |
def user_quota(request): |
259 |
try: |
|
260 |
get_user(request, settings.ASTAKOS_URL, usage=True) |
|
261 |
except TypeError: |
|
262 |
# astakos client backwards compatibility |
|
263 |
get_user(request, settings.ASTAKOS_URL) |
|
259 |
get_user(request, settings.ASTAKOS_URL, usage=True) |
|
264 | 260 |
|
265 | 261 |
if request.user and 'usage' in request.user: |
266 | 262 |
response = json.dumps(request.user['usage']) |
Also available in: Unified diff