diff options
-rw-r--r-- | src/etcd/__init__.py | 3 | ||||
-rw-r--r-- | src/etcd/client.py | 8 |
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: |