Revision b44a5a37

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:
b/kamaki/clients/astakos/test.py
60 60

  
61 61
example0 = dict(
62 62
    access=dict(
63
         token=dict(
64
            expires="2013-07-14T10:07:42.481134+00:00",
65
            id="ast@k0sT0k3n==",
66
            tenant=dict(
67
                id="42",
68
                name="Simple Name 0")
69
        ),
63 70
        serviceCatalog=[
64 71
            dict(name='service name 1', type='compute', endpoints=[
65 72
                dict(versionId='v1', publicUrl='http://1.1.1.1/v1'),
......
168 175

  
169 176
    def test_list_users(self):
170 177
        if not self.cached:
171
            self._authenticate
178
            self._authenticate()
172 179
        FR.json = example0
173 180
        self._authenticate()
174 181
        r = self.client.list_users()

Also available in: Unified diff