Revision 890c2065 snf-common/synnefo/lib/astakos.py
b/snf-common/synnefo/lib/astakos.py | ||
---|---|---|
66 | 66 |
return f |
67 | 67 |
return execute |
68 | 68 |
|
69 |
def call(token, url, headers={}): |
|
69 |
def call(token, url, headers={}, body=None, method='GET'):
|
|
70 | 70 |
p = urlparse(url) |
71 | 71 |
|
72 | 72 |
kwargs = {} |
73 | 73 |
kwargs['headers'] = headers |
74 | 74 |
kwargs['headers']['X-Auth-Token'] = token |
75 |
kwargs['headers']['Content-Length'] = 0 |
|
75 |
if body: |
|
76 |
kwargs['body'] = body |
|
77 |
kwargs['headers'].setdefault('content-type', 'application/octet-stream') |
|
78 |
kwargs['headers'].setdefault('content-length', len(body) if body else 0) |
|
79 |
|
|
76 | 80 |
|
77 | 81 |
conn = get_http_connection(p.netloc, p.scheme) |
78 | 82 |
try: |
79 |
conn.request('GET', p.path + '?' + p.query, **kwargs)
|
|
83 |
conn.request(method, p.path + '?' + p.query, **kwargs)
|
|
80 | 84 |
response = conn.getresponse() |
81 | 85 |
headers = response.getheaders() |
82 | 86 |
headers = dict((unquote(h), unquote(v)) for h,v in headers) |
... | ... | |
103 | 107 |
|
104 | 108 |
|
105 | 109 |
@retry(3) |
106 |
def get_username(
|
|
110 |
def get_displaynames(
|
|
107 | 111 |
token, |
108 |
uuid, |
|
109 |
url='http://127.0.0.1:8000/im/service/api/v2.0/users',
|
|
112 |
uuids,
|
|
113 |
url='http://127.0.0.1:8000/user_catalogs',
|
|
110 | 114 |
override_users={}): |
111 |
if override_users: |
|
112 |
return uuid |
|
113 | 115 |
|
114 |
headers = {} |
|
115 |
if uuid: |
|
116 |
headers['X-User-Uuid'] = uuid |
|
116 |
if override_users: |
|
117 |
return dict((u,u) for u in uuids) |
|
117 | 118 |
|
118 | 119 |
try: |
119 |
data = call(token, url, headers) |
|
120 |
data = call( |
|
121 |
token, url, headers={'content-type':'application/json'}, |
|
122 |
body=json.dumps({'uuids':uuids}), method='POST') |
|
120 | 123 |
except Exception, e: |
121 | 124 |
raise e |
122 | 125 |
else: |
123 |
return data.get('username')
|
|
126 |
return data.get('uuid_catalog')
|
|
124 | 127 |
|
125 | 128 |
|
126 | 129 |
@retry(3) |
127 |
def get_user_uuid(
|
|
130 |
def get_uuids(
|
|
128 | 131 |
token, |
129 |
username,
|
|
130 |
url='http://127.0.0.1:8000/im/service/api/v2.0/users',
|
|
132 |
displaynames,
|
|
133 |
url='http://127.0.0.1:8000/user_catalogs',
|
|
131 | 134 |
override_users={}): |
135 |
|
|
132 | 136 |
if override_users: |
133 |
return username
|
|
137 |
return dict((u,u) for u in displaynames)
|
|
134 | 138 |
|
135 |
headers = {} |
|
136 |
if username: |
|
137 |
headers['X-User-Username'] = username |
|
138 | 139 |
try: |
139 |
data = call(token, url, headers) |
|
140 |
data = call( |
|
141 |
token, url, headers={'content-type':'application/json'}, |
|
142 |
body=json.dumps({'displaynames':displaynames}), method='POST') |
|
140 | 143 |
except Exception, e: |
144 |
import traceback |
|
145 |
traceback.print_exc() |
|
141 | 146 |
raise e |
142 | 147 |
else: |
143 |
return data.get('uuid') |
|
148 |
return data.get('displayname_catalog') |
|
149 |
|
|
150 |
def get_user_uuid( |
|
151 |
token, |
|
152 |
displayname, |
|
153 |
url='http://127.0.0.1:8000/user_catalogs', |
|
154 |
override_users={}): |
|
155 |
|
|
156 |
if not displayname: |
|
157 |
return |
|
158 |
|
|
159 |
displayname_dict = get_uuids(token, [displayname], url, override_users) |
|
160 |
return displayname_dict.get(displayname) |
|
161 |
|
|
162 |
|
|
163 |
def get_displayname( |
|
164 |
token, |
|
165 |
uuid, |
|
166 |
url='http://127.0.0.1:8000/user_catalogs', |
|
167 |
override_users={}): |
|
168 |
|
|
169 |
if not uuid: |
|
170 |
return |
|
144 | 171 |
|
172 |
uuid_dict = get_displaynames(token, [uuid], url, override_users) |
|
173 |
return uuid_dict.get(uuid) |
|
145 | 174 |
|
146 | 175 |
def user_for_token(token, authentication_url, override_users, usage=False): |
147 | 176 |
if not token: |
... | ... | |
189 | 218 |
authentication_url) |
190 | 219 |
return None |
191 | 220 |
|
192 |
# use user uuid, instead of email, keep email/username reference to user_id
|
|
221 |
# use user uuid, instead of email, keep email/displayname reference to user_id
|
|
193 | 222 |
request.user_uniq = user['uuid'] |
194 | 223 |
request.user = user |
195 |
request.user_id = user.get('username')
|
|
224 |
request.user_id = user.get('displayname')
|
|
196 | 225 |
return user |
197 | 226 |
|
198 | 227 |
|
Also available in: Unified diff