diff options
Diffstat (limited to 'src/etcd/client.py')
-rw-r--r-- | src/etcd/client.py | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/etcd/client.py b/src/etcd/client.py index bc1a76f..a770575 100644 --- a/src/etcd/client.py +++ b/src/etcd/client.py @@ -11,6 +11,7 @@ import json import ssl import etcd +import logging class Client(object): @@ -161,7 +162,7 @@ class Client(object): return [ node.strip() for node in self.api_execute( self.version_prefix + '/machines', - self._MGET).split(',') + self._MGET).data.split(',') ] @property @@ -175,7 +176,7 @@ class Client(object): """ return self.api_execute( self.version_prefix + '/leader', - self._MGET) + self._MGET).data @property def key_endpoint(self): @@ -412,12 +413,12 @@ class Client(object): def _result_from_response(self, response): """ Creates an EtcdResult from json dictionary """ try: - res = json.loads(response) - if isinstance(res, list): - return [etcd.EtcdResult(**v) for v in res] + res = json.loads(response.data) + if response.status == 201: + res['newKey'] = True return etcd.EtcdResult(**res) except Exception, e: - raise etcd.EtcdException('Unable to decode server response: %s', e) + raise etcd.EtcdException('Unable to decode server response: %s' % e) def _next_server(self): """ Selects the next server in the list, refreshes the server list. """ @@ -459,12 +460,8 @@ class Client(object): self._machines_cache = self.machines self._machines_cache.remove(self._base_uri) - if response.status == 200: - return response.data - elif response.status == 201: - #we still need to know this from the response, I guess - response.data['newKey'] = True - return response.data + if response.status in [200,201]: + return response else: #throw the appropriate exception |