Skip to content

Commit b2e486e

Browse files
author
r0p0s3c
committed
Added methods to add/remove etcd cluster members
1 parent 0d0145f commit b2e486e

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

src/etcd/client.py

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,35 @@ def leader(self):
342342
except Exception as e:
343343
raise etcd.EtcdException("Cannot get leader data: %s" % e)
344344

345+
def addmember(self, memberuri):
346+
"""
347+
add a member to the cluster
348+
349+
Args:
350+
memberuri (str): new member's address as a uri
351+
352+
Returns:
353+
dict with id and peerURLs as documented at https://coreos.com/etcd/docs/latest/v2/members_api.html#add-a-member
354+
355+
"""
356+
try:
357+
return self.api_execute_json(self.version_prefix + '/members', self._MPOST, {"peerURLs":[memberuri]}).data.decode('utf-8')
358+
except Exception as e:
359+
raise etcd.EtcdException("Cannot add member: %s" % e)
360+
361+
def deletemember(self, memberid):
362+
"""
363+
add a member to the cluster
364+
365+
Args:
366+
memberid (str): member id to delete
367+
368+
"""
369+
try:
370+
self.api_execute(self.version_prefix + '/members/%s'%memberid, self._MDELETE)
371+
except Exception as e:
372+
raise etcd.EtcdException("Cannot delete member: %s" % e)
373+
345374
@property
346375
def stats(self):
347376
"""
@@ -937,7 +966,7 @@ def _check_cluster_id(self, response):
937966

938967
def _handle_server_response(self, response):
939968
""" Handles the server response """
940-
if response.status in [200, 201]:
969+
if response.status in [200, 201, 204]:
941970
return response
942971

943972
else:

0 commit comments

Comments
 (0)