summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.rst5
-rw-r--r--src/etcd/client.py13
-rw-r--r--src/etcd/tests/unit/test_client.py8
3 files changed, 20 insertions, 6 deletions
diff --git a/README.rst b/README.rst
index 99299f0..2ef28d0 100644
--- a/README.rst
+++ b/README.rst
@@ -41,7 +41,8 @@ Create a client object
client = etcd.Client(port=4002)
client = etcd.Client(host='127.0.0.1', port=4003)
client = etcd.Client(host='127.0.0.1', port=4003, allow_redirect=False) # wont let you run sensitive commands on non-leader machines, default is true
-
+ # create a client against https://api.example.com:443/etcd
+ client = etcd.Client(host='api.example.com', protocol='https', port=443, version_prefix='/etcd')
Write a key
~~~~~~~~~
@@ -74,7 +75,7 @@ Atomic Compare and Swap
.. code:: python
client.write('/nodes/n2', 2, prevValue = 4) # will set /nodes/n2 's value to 2 only if its previous value was 4 and
- client.write('/nodes/n2', 2, prevExists = False) # will set /nodes/n2 's value to 2 only if the key did not exist before
+ client.write('/nodes/n2', 2, prevExist = False) # will set /nodes/n2 's value to 2 only if the key did not exist before
client.write('/nodes/n2', 2, prevIndex = 30) # will set /nodes/n2 's value to 2 only if the key was last modified at index 30
client.test_and_set('/nodes/n2', 2, 4) #equivalent to client.write('/nodes/n2', 2, prevValue = 4)
diff --git a/src/etcd/client.py b/src/etcd/client.py
index f73c667..271d85e 100644
--- a/src/etcd/client.py
+++ b/src/etcd/client.py
@@ -30,6 +30,7 @@ class Client(object):
self,
host='127.0.0.1',
port=4001,
+ version_prefix='/v2',
read_timeout=60,
allow_redirect=True,
protocol='http',
@@ -47,6 +48,8 @@ class Client(object):
port (int): Port used to connect to etcd.
+ version_prefix (str): Url or version prefix in etcd url (default=/v2).
+
read_timeout (int): max seconds to wait for a read.
allow_redirect (bool): allow the client to connect to other nodes.
@@ -81,7 +84,7 @@ class Client(object):
self._base_uri = uri(self._protocol, self._host, self._port)
- self.version_prefix = '/v2'
+ self.version_prefix = version_prefix
self._read_timeout = read_timeout
self._allow_redirect = allow_redirect
@@ -452,7 +455,7 @@ class Client(object):
"""
return self.read(key)
- def watch(self, key, index=None, timeout=None):
+ def watch(self, key, index=None, timeout=None, recursive=None):
"""
Blocks until a new event has been received, starting at index 'index'
@@ -476,9 +479,11 @@ class Client(object):
"""
if index:
- return self.read(key, wait=True, waitIndex=index, timeout=timeout)
+ return self.read(key, wait=True, waitIndex=index, timeout=timeout,
+ recursive=recursive)
else:
- return self.read(key, wait=True, timeout=timeout)
+ return self.read(key, wait=True, timeout=timeout,
+ recursive=recursive)
def eternal_watch(self, key, index=None):
"""
diff --git a/src/etcd/tests/unit/test_client.py b/src/etcd/tests/unit/test_client.py
index 4d83161..7ed00ee 100644
--- a/src/etcd/tests/unit/test_client.py
+++ b/src/etcd/tests/unit/test_client.py
@@ -19,6 +19,10 @@ class TestClient(unittest.TestCase):
client = etcd.Client()
assert client.port == 4001
+ def test_default_prefix(self):
+ client = etcd.Client()
+ assert client.version_prefix == '/v2'
+
def test_default_protocol(self):
""" default protocol is http"""
client = etcd.Client()
@@ -44,6 +48,10 @@ class TestClient(unittest.TestCase):
client = etcd.Client(port=4002)
assert client.port == 4002
+ def test_default_prefix(self):
+ client = etcd.Client(version_prefix='/etcd')
+ assert client.version_prefix == '/etcd'
+
def test_set_protocol(self):
""" can change protocol """
client = etcd.Client(protocol='https')