From 40a4192504cfbf99da30a83f8c088f9b5a340651 Mon Sep 17 00:00:00 2001 From: Alexander Kukushkin Date: Wed, 13 May 2015 17:12:17 +0200 Subject: [PATCH] Remove member and leader (is I was the master) keys from etcd on stop of governor --- governor.py | 2 ++ helpers/etcd.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/governor.py b/governor.py index cafc79b3..e46f4919 100755 --- a/governor.py +++ b/governor.py @@ -67,6 +67,8 @@ def main(): governor.run() finally: governor.postgresql.stop() + governor.etcd.delete_member(governor.postgresql.name) + governor.etcd.delete_leader(governor.postgresql.name) if __name__ == '__main__': diff --git a/helpers/etcd.py b/helpers/etcd.py index 1606f22b..7fa0d36e 100644 --- a/helpers/etcd.py +++ b/helpers/etcd.py @@ -56,6 +56,14 @@ class Etcd: logger.exception('PUT %s data=%s', path, data) return False + def delete_client_path(self, path): + try: + response = requests.delete(self.client_url(path)) + return response.status_code == 204 + except: + logger.exception('DELETE %s', path) + return False + def client_url(self, path): return self.base_client_url + path @@ -122,3 +130,9 @@ class Etcd: def race(self, path, value): return self.put_client_path(path, value=value, prevExist=False) + + def delete_member(self, member): + return self.delete_client_path('/members/' + member) + + def delete_leader(self, value): + return self.delete_client_path('/leader?prevValue=' + value)