Revision b44a5a37 kamaki/clients/astakos/__init__.py

b/kamaki/clients/astakos/__init__.py
41 41
    def __init__(self, base_url, token=None):
42 42
        super(AstakosClient, self).__init__(base_url, token)
43 43
        self._cache = {}
44
        self._uuids = {}
44 45
        self.log = getLogger('__name__')
45 46

  
46 47
    def authenticate(self, token=None):
......
54 55
        """
55 56
        self.token = token or self.token
56 57
        body = dict(auth=dict(token=dict(id=self.token)))
57
        self._cache[self.token] = self.post('/tokens', json=body).json
58
        return self._cache[self.token]
58
        r = self.post('/tokens', json=body).json
59
        uuid = r['access']['user']['id']
60
        self._uuids[self.token] = uuid
61
        self._cache[uuid] = r
62
        return self._cache[uuid]
63

  
64
    def get_token(self, uuid):
65
        return self._cache[uuid]['access']['token']['id']
59 66

  
60 67
    def get_services(self, token=None):
61 68
        """
......
64 71
        token_bu = self.token or token
65 72
        token = token or self.token
66 73
        try:
67
            r = self._cache[token]
74
            r = self._cache[self._uuids[token]]
68 75
        except KeyError:
69 76
            r = self.authenticate(token)
70 77
        finally:
......
122 129
        r = []
123 130
        for k, v in self._cache.items():
124 131
            r.append(dict(v['access']['user']))
125
            r[-1].update(dict(auth_token=k))
132
            r[-1].update(dict(auth_token=self.get_token(k)))
126 133
        return r
127 134

  
128 135
    def user_info(self, token=None):
......
130 137
        token_bu = self.token or token
131 138
        token = token or self.token
132 139
        try:
133
            r = self._cache[token]
140
            r = self._cache[self._uuids[token]]
134 141
        except KeyError:
135 142
            r = self.authenticate(token)
136 143
        finally:

Also available in: Unified diff