Revision b31051d6
b/kamaki/clients/quotaholder/__init__.py | ||
---|---|---|
31 | 31 |
# interpreted as representing official policies, either expressed |
32 | 32 |
# or implied, of GRNET S.A. |
33 | 33 |
|
34 |
from kamaki.clients.commissioning import Callpoint, CallError |
|
35 |
from kamaki.clients.commissioning.utils.debug import debug |
|
36 |
from kamaki.clients import Client |
|
34 |
from kamaki.clients.quotaholder.api import ( |
|
35 |
QuotaholderAPI, |
|
36 |
QH_PRACTICALLY_INFINITE) |
|
37 |
from kamaki.clients.commissioning_client import CommissioningClient |
|
37 | 38 |
|
38 |
from json import loads as json_loads, dumps as json_dumps |
|
39 | 39 |
|
40 |
class QuotaholderClient(CommissioningClient): |
|
40 | 41 |
|
41 |
class CommissioningClient(Callpoint): |
|
42 |
api_spec = QuotaholderAPI() |
|
43 |
appname = 'quotaholder' |
|
42 | 44 |
|
43 |
def __init__(self, base_url, token): |
|
44 |
super(CommissioningClient, self).__init__() |
|
45 |
self._kc = Client(base_url, token) |
|
46 |
|
|
47 |
def do_make_call(self, api_call, data): |
|
48 |
|
|
49 |
_kc = self._kc |
|
50 |
|
|
51 |
gettable = ['list', 'get', 'read'] |
|
52 |
method = (_kc.get if any(api_call.startswith(x) for x in gettable) |
|
53 |
else _kc.post) |
|
54 |
|
|
55 |
path = api_call |
|
56 |
json_data = json_dumps(data) |
|
57 |
debug("%s %s\n%s\n<<<\n", method.func_name, path, json_data) |
|
58 |
|
|
59 |
resp = method(path, data=json_data, success=(200, 450, 500)) |
|
60 |
debug(">>>\nStatus: %s", resp.status_code) |
|
61 |
|
|
62 |
body = resp.text |
|
63 |
debug("\n%s\n<<<\n", body[:128] if body else None) |
|
64 |
|
|
65 |
status = int(resp.status_code) |
|
66 |
if status == 200: |
|
67 |
return json_loads(body) |
|
68 |
else: |
|
69 |
try: |
|
70 |
error = json_loads(body) |
|
71 |
except ValueError: |
|
72 |
exc = CallError(body, call_error='ValueError') |
|
73 |
else: |
|
74 |
exc = CallError.from_dict(error) |
|
75 |
raise exc |
|
45 |
def __init__(self, base_url=None, token=None): |
|
46 |
default_url = 'http://127.0.0.1:8008/quotaholder/v' |
|
47 |
base_url = base_url if base_url else default_url |
|
48 |
super(self.__class__, self).__init__(base_url, token) |
Also available in: Unified diff