diff options
-rw-r--r-- | README.rst | 5 | ||||
-rw-r--r-- | src/etcd/client.py | 13 | ||||
-rw-r--r-- | src/etcd/tests/unit/test_client.py | 8 |
3 files changed, 20 insertions, 6 deletions
@@ -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') |