summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/etcd/__init__.py3
-rw-r--r--src/etcd/client.py8
2 files changed, 9 insertions, 2 deletions
diff --git a/src/etcd/__init__.py b/src/etcd/__init__.py
index 76306e2..69de598 100644
--- a/src/etcd/__init__.py
+++ b/src/etcd/__init__.py
@@ -11,6 +11,7 @@ class EtcdResult(collections.namedtuple(
'ttl',
'modifiedIndex',
'prevValue',
+ 'newKey',
'dir',
'kvs'
]
@@ -24,6 +25,7 @@ class EtcdResult(collections.namedtuple(
ttl=None,
modifiedIndex=None,
prevValue=None,
+ newKey=False,
dir=False,
kvs=None
):
@@ -42,6 +44,7 @@ class EtcdResult(collections.namedtuple(
ttl,
modifiedIndex,
prevValue,
+ newKey,
dir,
kvs
)
diff --git a/src/etcd/client.py b/src/etcd/client.py
index dbf590b..bc1a76f 100644
--- a/src/etcd/client.py
+++ b/src/etcd/client.py
@@ -417,7 +417,7 @@ class Client(object):
return [etcd.EtcdResult(**v) for v in res]
return etcd.EtcdResult(**res)
except Exception, e:
- raise etcd.EtcdException('Unable to decode server response')
+ 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,7 +459,11 @@ class Client(object):
self._machines_cache = self.machines
self._machines_cache.remove(self._base_uri)
- if response.status in [200,201] :
+ 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
else: