Revision b31051d6 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.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