Revision d1304043 kamaki/clients/quotaholder/__init__.py

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.quotaholder.api import QuotaholderAPI
35
from kamaki.clients.commissioning.client import CommissioningClient
34
from kamaki.clients.commissioning import Callpoint, CallError
35
from kamaki.clients.commissioning.utils.debug import debug
36
from kamaki.clients import Client
36 37

  
38
from json import loads as json_loads, dumps as json_dumps
37 39

  
38
class QuotaholderClient(CommissioningClient):
39 40

  
40
    api_spec = QuotaholderAPI()
41
    appname = 'quotaholder'
41
class CommissioningClient(Callpoint):
42 42

  
43
    def __init__(self, base_url=None, token=None):
44
        super(self.__class__, self).__init__(base_url, token)
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

Also available in: Unified diff