summaryrefslogtreecommitdiff
path: root/src/etcd/client.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/etcd/client.py')
-rw-r--r--src/etcd/client.py21
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