Statistics
| Branch: | Tag: | Revision:

root / astakosclient / docs / index.rst @ 75144caa

History | View | Annotate | Download (9.9 kB)

1 fa7a3ca1 Ilias Tsitsimpis
.. _astakosclient:
2 1acf67a7 Ilias Tsitsimpis
3 fa7a3ca1 Ilias Tsitsimpis
Component astakosclient
4 f8958a97 Ilias Tsitsimpis
^^^^^^^^^^^^^^^^^^^^^^^
5 1acf67a7 Ilias Tsitsimpis
6 9c3cbd0d Ilias Tsitsimpis
The Synnefo component astakosclient_ defines a
7 9c3cbd0d Ilias Tsitsimpis
default client for the `Astakos <astakos>`_ service. It is designed to be
8 4b92d3f7 Constantinos Venetsanopoulos
simple and minimal, hence easy to debug and test.
9 4b92d3f7 Constantinos Venetsanopoulos
10 4b92d3f7 Constantinos Venetsanopoulos
It uses the user's authentication token to query Astakos for:
11 1acf67a7 Ilias Tsitsimpis
12 1acf67a7 Ilias Tsitsimpis
    * User's info
13 4b92d3f7 Constantinos Venetsanopoulos
    * Usernames for given UUIDs
14 4b92d3f7 Constantinos Venetsanopoulos
    * UUIDs for given usernames
15 5c418e94 Ilias Tsitsimpis
    * User's quotas
16 4b92d3f7 Constantinos Venetsanopoulos
17 4b92d3f7 Constantinos Venetsanopoulos
It can also query Astakos with another service's (Cyclades or Pithos)
18 4b92d3f7 Constantinos Venetsanopoulos
authentication token for:
19 1acf67a7 Ilias Tsitsimpis
20 4b92d3f7 Constantinos Venetsanopoulos
    * Usernames for given UUIDs
21 4b92d3f7 Constantinos Venetsanopoulos
    * UUIDs for given usernames
22 5b33b8e5 Giorgos Korfiatis
    * Quotas for all related resources
23 5c418e94 Ilias Tsitsimpis
    * Issue commissions
24 5c418e94 Ilias Tsitsimpis
    * Get pending commissions
25 5c418e94 Ilias Tsitsimpis
    * Accept or reject commissions
26 1acf67a7 Ilias Tsitsimpis
27 4b92d3f7 Constantinos Venetsanopoulos
Additionally, there are options for using the `objpool
28 4b92d3f7 Constantinos Venetsanopoulos
<https://github.com/grnet/objpool>`_ library to pool the http connections.
29 1acf67a7 Ilias Tsitsimpis
30 1acf67a7 Ilias Tsitsimpis
31 1acf67a7 Ilias Tsitsimpis
Basic example
32 1acf67a7 Ilias Tsitsimpis
=============
33 1acf67a7 Ilias Tsitsimpis
34 4b92d3f7 Constantinos Venetsanopoulos
The ``astakosclient`` module provides the ``AstakosClient`` class. This section
35 4b92d3f7 Constantinos Venetsanopoulos
demonstrates how to get user's info using ``astakosclient``.
36 1acf67a7 Ilias Tsitsimpis
37 1acf67a7 Ilias Tsitsimpis
.. code-block:: python
38 1acf67a7 Ilias Tsitsimpis
39 1acf67a7 Ilias Tsitsimpis
    from astakosclient import AstakosClient
40 1acf67a7 Ilias Tsitsimpis
41 9c3cbd0d Ilias Tsitsimpis
    client = AstakosClient("UQpYas7ElzWGD5yCcEXtjw",
42 9c3cbd0d Ilias Tsitsimpis
                           "https://accounts.example.com")
43 b4b82ec4 Giorgos Korfiatis
    user_info = client.authenticate()
44 b4b82ec4 Giorgos Korfiatis
    print user_info['access']['user']['id']
45 1acf67a7 Ilias Tsitsimpis
46 4b92d3f7 Constantinos Venetsanopoulos
Another example where we ask for the username of a user with UUID:
47 4b92d3f7 Constantinos Venetsanopoulos
``b3de8eb0-3958-477e-als9-789af8dd352c``
48 1acf67a7 Ilias Tsitsimpis
49 1acf67a7 Ilias Tsitsimpis
.. code-block:: python
50 1acf67a7 Ilias Tsitsimpis
51 1acf67a7 Ilias Tsitsimpis
    from astakosclient import AstakosClient
52 1acf67a7 Ilias Tsitsimpis
53 9c3cbd0d Ilias Tsitsimpis
    client = AstakosClient("UQpYas7ElzWGD5yCcEXtjw",
54 9c3cbd0d Ilias Tsitsimpis
                           "https://accounts.example.com")
55 9c3cbd0d Ilias Tsitsimpis
    username = client.get_username("b3de8eb0-3958-477e-als9-789af8dd352c")
56 1acf67a7 Ilias Tsitsimpis
    print username
57 1acf67a7 Ilias Tsitsimpis
58 1acf67a7 Ilias Tsitsimpis
59 1acf67a7 Ilias Tsitsimpis
Classes and functions
60 1acf67a7 Ilias Tsitsimpis
=====================
61 1acf67a7 Ilias Tsitsimpis
62 4b92d3f7 Constantinos Venetsanopoulos
This section describes in depth the API of ``astakosclient``.
63 1acf67a7 Ilias Tsitsimpis
64 1acf67a7 Ilias Tsitsimpis
Astakos Client
65 1acf67a7 Ilias Tsitsimpis
--------------
66 1acf67a7 Ilias Tsitsimpis
67 9c3cbd0d Ilias Tsitsimpis
*class* astakosclient.\ **AstakosClient(**\ token, auth_url,
68 1acf67a7 Ilias Tsitsimpis
retry=0, use_pool=False, pool_size=8, logger=None\ **)**
69 1acf67a7 Ilias Tsitsimpis
70 9c3cbd0d Ilias Tsitsimpis
    Initialize an instance of **AstakosClient** given the Authentication Url
71 9c3cbd0d Ilias Tsitsimpis
    *auth_url* and the Token *token*.
72 1acf67a7 Ilias Tsitsimpis
    Optionally one can specify if we are going to use a pool, the pool_size
73 1acf67a7 Ilias Tsitsimpis
    and the number of retries if the connection fails.
74 1acf67a7 Ilias Tsitsimpis
75 1acf67a7 Ilias Tsitsimpis
    This class provides the following methods:
76 1acf67a7 Ilias Tsitsimpis
77 45c0bcf8 Giorgos Korfiatis
    **authenticate(**\ tenant_name=None\ **)**
78 45c0bcf8 Giorgos Korfiatis
        It authenticates the user and returns information about the user,
79 45c0bcf8 Giorgos Korfiatis
        their token as well as the service endpoints one can access. In
80 45c0bcf8 Giorgos Korfiatis
        case of error, it raises an AstakosClientException exception.
81 45c0bcf8 Giorgos Korfiatis
82 9c3cbd0d Ilias Tsitsimpis
    **get_usernames(**\ uuids\ **)**
83 9c3cbd0d Ilias Tsitsimpis
        Given a list of UUIDs it returns a uuid_catalog, that is a dictionary
84 9c3cbd0d Ilias Tsitsimpis
        with the given UUIDs as keys and the corresponding user names as
85 9c3cbd0d Ilias Tsitsimpis
        values.  Invalid UUIDs will not be in the dictionary.  In case of
86 9c3cbd0d Ilias Tsitsimpis
        error, it raises an AstakosClientException exception.
87 9c3cbd0d Ilias Tsitsimpis
88 9c3cbd0d Ilias Tsitsimpis
    **get_username(**\ uuid\ **)**
89 9c3cbd0d Ilias Tsitsimpis
        Given a UUID (as string) it returns the corresponding user name (as
90 9c3cbd0d Ilias Tsitsimpis
        string).  In case of invalid UUID it raises NoUserName exception.  In
91 9c3cbd0d Ilias Tsitsimpis
        case of error, it raises an AstakosClientException exception.
92 9c3cbd0d Ilias Tsitsimpis
93 9c3cbd0d Ilias Tsitsimpis
    **service_get_usernames(**\ uuids\ **)**
94 9c3cbd0d Ilias Tsitsimpis
        Same as get_usernames but used with service tokens.
95 9c3cbd0d Ilias Tsitsimpis
96 9c3cbd0d Ilias Tsitsimpis
    **service_get_username(**\ uuid\ **)**
97 9c3cbd0d Ilias Tsitsimpis
        Same as get_username but used with service tokens.
98 9c3cbd0d Ilias Tsitsimpis
99 9c3cbd0d Ilias Tsitsimpis
    **get_uuids(**\ display_names\ **)**
100 9c3cbd0d Ilias Tsitsimpis
        Given a list of usernames it returns a displayname_catalog, that is a
101 9c3cbd0d Ilias Tsitsimpis
        dictionary with the given usernames as keys and the corresponding UUIDs
102 9c3cbd0d Ilias Tsitsimpis
        as values.  Invalid usernames will not be in the dictionary.  In case
103 9c3cbd0d Ilias Tsitsimpis
        of error, it raises an AstakosClientException exception.
104 9c3cbd0d Ilias Tsitsimpis
105 9c3cbd0d Ilias Tsitsimpis
    **get_uuid(**\ display_name\ **)**
106 9c3cbd0d Ilias Tsitsimpis
        Given a username (as string) it returns the corresponding UUID (as
107 9c3cbd0d Ilias Tsitsimpis
        string).  In case of invalid user name it raises NoUUID exception.  In
108 9c3cbd0d Ilias Tsitsimpis
        case of error, it raises an AstakosClientException exception.
109 9c3cbd0d Ilias Tsitsimpis
110 9c3cbd0d Ilias Tsitsimpis
    **service_get_uuids(**\ uuids\ **)**
111 9c3cbd0d Ilias Tsitsimpis
        Same as get_uuids but used with service tokens.
112 9c3cbd0d Ilias Tsitsimpis
113 9c3cbd0d Ilias Tsitsimpis
    **service_get_uuid(**\ uuid\ **)**
114 9c3cbd0d Ilias Tsitsimpis
        Same as get_uuid but used with service tokens.
115 1acf67a7 Ilias Tsitsimpis
116 794c94e6 Ilias Tsitsimpis
    **get_services()**
117 1acf67a7 Ilias Tsitsimpis
        Return a list of dicts with the registered services.
118 1acf67a7 Ilias Tsitsimpis
119 5c418e94 Ilias Tsitsimpis
    **get_resources()**
120 5c418e94 Ilias Tsitsimpis
        Return a list of dicts with the available resources
121 5c418e94 Ilias Tsitsimpis
122 9c3cbd0d Ilias Tsitsimpis
    **send_feedback(**\ message, data\ **)**
123 9c3cbd0d Ilias Tsitsimpis
        Send some feedback to astakos service. Additional information about the
124 9c3cbd0d Ilias Tsitsimpis
        service client status can be given in the data variable.  In case of
125 9c3cbd0d Ilias Tsitsimpis
        success it returns nothing.  Otherwise it raises an
126 9c3cbd0d Ilias Tsitsimpis
        AstakosClientException exception.
127 9c3cbd0d Ilias Tsitsimpis
128 45c0bcf8 Giorgos Korfiatis
    **get_endpoints()**
129 45c0bcf8 Giorgos Korfiatis
        It returns the services URLs one can access. In case of error it
130 45c0bcf8 Giorgos Korfiatis
        raises an AstakosClientException exception.
131 9c3cbd0d Ilias Tsitsimpis
132 9c3cbd0d Ilias Tsitsimpis
    **get_quotas()**
133 9c3cbd0d Ilias Tsitsimpis
        It returns user's current quotas (as dict of dicts). In case of error
134 9c3cbd0d Ilias Tsitsimpis
        it raises an AstakosClientException exception.
135 9c3cbd0d Ilias Tsitsimpis
136 9c3cbd0d Ilias Tsitsimpis
    **service_get_quotas(**\ user=None\ **)**
137 9c3cbd0d Ilias Tsitsimpis
        It returns all users' current quotas for the resources associated with
138 9c3cbd0d Ilias Tsitsimpis
        the service (as dict of dicts of dicts). Optionally, one can query the
139 9c3cbd0d Ilias Tsitsimpis
        quotas of a specific user with argument user=UUID. In case of error it
140 9c3cbd0d Ilias Tsitsimpis
        raises an AstakosClientException exception.
141 9c3cbd0d Ilias Tsitsimpis
142 9c3cbd0d Ilias Tsitsimpis
    **issue_commission(**\ request\ **)**
143 9c3cbd0d Ilias Tsitsimpis
        Issue a commission. In case of success it returns commission's id
144 9c3cbd0d Ilias Tsitsimpis
        (int). Otherwise it raises an AstakosClientException exception.
145 9c3cbd0d Ilias Tsitsimpis
146 9c3cbd0d Ilias Tsitsimpis
    **issue_one_commission(**\ holder, source, provisions, name="", force=False, auto_accept=False\ **)**
147 9c3cbd0d Ilias Tsitsimpis
        Issue a commission. We have to specify the holder, the source and the
148 9c3cbd0d Ilias Tsitsimpis
        provisions (a dict from string to int) and astakosclient will create
149 9c3cbd0d Ilias Tsitsimpis
        the corresponding commission. In case of success it returns
150 9c3cbd0d Ilias Tsitsimpis
        commission's id (int). Otherwise it raises an AstakosClientException
151 9c3cbd0d Ilias Tsitsimpis
        exception.
152 9c3cbd0d Ilias Tsitsimpis
153 9c3cbd0d Ilias Tsitsimpis
    **get_pending_commissions()**
154 9c3cbd0d Ilias Tsitsimpis
        It returns the pending commissions (list of integers). In case of
155 9c3cbd0d Ilias Tsitsimpis
        error it raises an AstakosClientException exception.
156 9c3cbd0d Ilias Tsitsimpis
157 9c3cbd0d Ilias Tsitsimpis
    **get_commission_info(**\ serial\ **)**
158 9c3cbd0d Ilias Tsitsimpis
        Given the id of a pending commission return a dict of dicts containting
159 9c3cbd0d Ilias Tsitsimpis
        informations (details) about the requested commission.  In case of
160 9c3cbd0d Ilias Tsitsimpis
        error it raises an AstakosClientException exception.
161 9c3cbd0d Ilias Tsitsimpis
162 9c3cbd0d Ilias Tsitsimpis
    **commission_action(**\ serial, action\ **)**
163 9c3cbd0d Ilias Tsitsimpis
        Given the id of a pending commission, request the specified action
164 9c3cbd0d Ilias Tsitsimpis
        (currently one of accept, reject).  In case of success it returns
165 9c3cbd0d Ilias Tsitsimpis
        nothing.  Otherwise it raises an AstakosClientException exception.
166 9c3cbd0d Ilias Tsitsimpis
167 9c3cbd0d Ilias Tsitsimpis
    **accept_commission(**\ serial\ **)**
168 5c418e94 Ilias Tsitsimpis
        Accept a pending commission (see commission_action).
169 5c418e94 Ilias Tsitsimpis
170 9c3cbd0d Ilias Tsitsimpis
    **reject_commission(**\ serial\ **)**
171 5c418e94 Ilias Tsitsimpis
        Reject a pending commission (see commission_action).
172 5c418e94 Ilias Tsitsimpis
173 9c3cbd0d Ilias Tsitsimpis
    **resolve_commissions(**\ accept_serials, reject_serials\ **)**
174 9c3cbd0d Ilias Tsitsimpis
        Accept or Reject many pending commissions at once.  In case of success
175 9c3cbd0d Ilias Tsitsimpis
        return a dict of dicts describing which commissions accepted, which
176 9c3cbd0d Ilias Tsitsimpis
        rejected and which failed to resolved. Otherwise raise an
177 9c3cbd0d Ilias Tsitsimpis
        AstakosClientException exception.
178 5c418e94 Ilias Tsitsimpis
179 9c3cbd0d Ilias Tsitsimpis
    **get_projects(**\ name=None, state=None, owner=None\ **)**
180 47bb45c0 Giorgos Korfiatis
        Retrieve all accessible projects
181 47bb45c0 Giorgos Korfiatis
182 9c3cbd0d Ilias Tsitsimpis
    **get_project(**\ project_id\ **)**
183 47bb45c0 Giorgos Korfiatis
        Retrieve project description, if accessible
184 47bb45c0 Giorgos Korfiatis
185 9c3cbd0d Ilias Tsitsimpis
    **create_project(**\ specs\ **)**
186 47bb45c0 Giorgos Korfiatis
        Submit application to create a new project
187 47bb45c0 Giorgos Korfiatis
188 9c3cbd0d Ilias Tsitsimpis
    **modify_project(**\ project_id, specs\ **)**
189 47bb45c0 Giorgos Korfiatis
        Submit application to modify an existing project
190 47bb45c0 Giorgos Korfiatis
191 9c3cbd0d Ilias Tsitsimpis
    **project_action(**\ project_id, action, reason=""\ **)**
192 47bb45c0 Giorgos Korfiatis
        Perform action on a project
193 47bb45c0 Giorgos Korfiatis
194 9c3cbd0d Ilias Tsitsimpis
    **get_applications(**\ project=None\ **)**
195 47bb45c0 Giorgos Korfiatis
        Retrieve all accessible applications
196 47bb45c0 Giorgos Korfiatis
197 9c3cbd0d Ilias Tsitsimpis
    **get_application(**\ app_id\ **)**
198 47bb45c0 Giorgos Korfiatis
        Retrieve application description, if accessible
199 47bb45c0 Giorgos Korfiatis
200 9c3cbd0d Ilias Tsitsimpis
    **application_action(**\ app_id, action, reason=""\ **)**
201 47bb45c0 Giorgos Korfiatis
        Perform action on an application
202 47bb45c0 Giorgos Korfiatis
203 9c3cbd0d Ilias Tsitsimpis
    **get_memberships(**\ project=None\ **)**
204 47bb45c0 Giorgos Korfiatis
        Retrieve all accessible memberships
205 47bb45c0 Giorgos Korfiatis
206 9c3cbd0d Ilias Tsitsimpis
    **get_membership(**\ memb_id\ **)**
207 47bb45c0 Giorgos Korfiatis
        Retrieve membership description, if accessible
208 47bb45c0 Giorgos Korfiatis
209 9c3cbd0d Ilias Tsitsimpis
    **membership_action(**\ memb_id, action, reason=""\ **)**
210 47bb45c0 Giorgos Korfiatis
        Perform action on a membership
211 47bb45c0 Giorgos Korfiatis
212 9c3cbd0d Ilias Tsitsimpis
    **join_project(**\ project_id\ **)**
213 47bb45c0 Giorgos Korfiatis
        Join a project
214 47bb45c0 Giorgos Korfiatis
215 9c3cbd0d Ilias Tsitsimpis
    **enroll_member(**\ project_id, email\ **)**
216 47bb45c0 Giorgos Korfiatis
        Enroll a user in a project
217 1acf67a7 Ilias Tsitsimpis
218 1acf67a7 Ilias Tsitsimpis
Public Functions
219 1acf67a7 Ilias Tsitsimpis
----------------
220 1acf67a7 Ilias Tsitsimpis
221 794c94e6 Ilias Tsitsimpis
**get_token_from_cookie(**\ request, cookie_name\ **)**
222 4b92d3f7 Constantinos Venetsanopoulos
    Given a Django request object and an Astakos cookie name
223 4b92d3f7 Constantinos Venetsanopoulos
    extract the user's token from it.
224 1acf67a7 Ilias Tsitsimpis
225 9c3cbd0d Ilias Tsitsimpis
**parse_endpoints(**\ endpoints, ep_name=None, ep_type=None, ep_region=None, ep_version_id=None\ **)**
226 9c3cbd0d Ilias Tsitsimpis
    Parse the endpoints (acquired using *get_endpoints*) and extract the ones
227 9c3cbd0d Ilias Tsitsimpis
    needed.  Return only the endpoints that match all of the given criterias.
228 9c3cbd0d Ilias Tsitsimpis
    If no match is found then raise NoEndpoints exception.
229 9c3cbd0d Ilias Tsitsimpis
230 1acf67a7 Ilias Tsitsimpis
231 1acf67a7 Ilias Tsitsimpis
Exceptions and Errors
232 1acf67a7 Ilias Tsitsimpis
=====================
233 1acf67a7 Ilias Tsitsimpis
234 1acf67a7 Ilias Tsitsimpis
*exception* **AstakosClientException**
235 1acf67a7 Ilias Tsitsimpis
    Raised in case of an error. It contains an error message and the
236 9c3cbd0d Ilias Tsitsimpis
    corresponding http status code. Other exceptions raised by astakosclient
237 9c3cbd0d Ilias Tsitsimpis
    module are derived from this one.
238 fa7a3ca1 Ilias Tsitsimpis
239 fa7a3ca1 Ilias Tsitsimpis
*exception* **BadValue**
240 fa7a3ca1 Ilias Tsitsimpis
    A redefinition of ValueError exception under AstakosClientException.
241 fa7a3ca1 Ilias Tsitsimpis
242 fa7a3ca1 Ilias Tsitsimpis
*exception* **InvalidResponse**
243 9c3cbd0d Ilias Tsitsimpis
    This exception is raised whenever the server's response is not valid json
244 9c3cbd0d Ilias Tsitsimpis
    (cannot be parsed by simplejson library).
245 1acf67a7 Ilias Tsitsimpis
246 1acf67a7 Ilias Tsitsimpis
*exception* **BadRequest**
247 1acf67a7 Ilias Tsitsimpis
    Raised in case of a Bad Request, with status 400.
248 1acf67a7 Ilias Tsitsimpis
249 1acf67a7 Ilias Tsitsimpis
*exception* **Unauthorized**
250 1acf67a7 Ilias Tsitsimpis
    Raised in case of Invalid token (unauthorized access), with status 401.
251 1acf67a7 Ilias Tsitsimpis
252 1acf67a7 Ilias Tsitsimpis
*exception* **Forbidden**
253 9c3cbd0d Ilias Tsitsimpis
    The server understood the request, but is refusing to fulfill it. Status
254 9c3cbd0d Ilias Tsitsimpis
    401.
255 1acf67a7 Ilias Tsitsimpis
256 1acf67a7 Ilias Tsitsimpis
*exception* **NotFound**
257 1acf67a7 Ilias Tsitsimpis
    The server has not found anything matching the Request-URI. Status 404.
258 1acf67a7 Ilias Tsitsimpis
259 fa7a3ca1 Ilias Tsitsimpis
*exception* **QuotaLimit**
260 fa7a3ca1 Ilias Tsitsimpis
    Quantity fell below zero or exceeded capacity in one of the holdings.
261 fa7a3ca1 Ilias Tsitsimpis
262 794c94e6 Ilias Tsitsimpis
*exception* **NoUserName**
263 9c3cbd0d Ilias Tsitsimpis
    Raised by getDisplayName and getServiceDisplayName when an invalid UUID was
264 9c3cbd0d Ilias Tsitsimpis
    given.
265 1acf67a7 Ilias Tsitsimpis
266 1acf67a7 Ilias Tsitsimpis
*exception* **NoUUID**
267 9c3cbd0d Ilias Tsitsimpis
    Raised by *getUUID* and *getServiceUUID* when an invalid username was
268 9c3cbd0d Ilias Tsitsimpis
    given.
269 9c3cbd0d Ilias Tsitsimpis
270 9c3cbd0d Ilias Tsitsimpis
*exception* **NoEndpoints**
271 9c3cbd0d Ilias Tsitsimpis
    Raised by *parse_endpoints* when no endpoints found matching the given
272 9c3cbd0d Ilias Tsitsimpis
    criteria.