Add initialize key into Cluster

This commit is contained in:
Alexander Kukushkin
2015-05-24 19:26:35 +02:00
parent 1096e04343
commit faf295dcd0
3 changed files with 7 additions and 5 deletions
+5 -3
View File
@@ -11,7 +11,7 @@ logger = logging.getLogger(__name__)
Member = namedtuple('Member', 'hostname,address,ttl')
class Cluster(namedtuple('Cluster', 'leader,last_leader_operation,members')):
class Cluster(namedtuple('Cluster', 'initialize,leader,last_leader_operation,members')):
def is_unlocked(self):
return not (self.leader and self.leader.hostname)
@@ -87,6 +87,8 @@ class Etcd:
try:
response, status_code = self.get_client_path('?recursive=true')
if status_code == 200:
node = self.find_node(response['node'], '/initialize')
initialize = True if node else False
# get list of members
node = self.find_node(response['node'], '/members') or {'nodes': []}
members = [Member(n['key'].split('/')[-1], n['value'], n.get('ttl', None)) for n in node['nodes']]
@@ -110,9 +112,9 @@ class Etcd:
if not leader:
leader = Member(node['value'], None, None)
return Cluster(leader, last_leader_operation, members)
return Cluster(initialize, leader, last_leader_operation, members)
elif status_code == 404:
return Cluster(None, None, [])
return Cluster(False, None, None, [])
except:
logger.exception('get_cluster')
+1 -1
View File
@@ -73,7 +73,7 @@ class TestHa(unittest.TestCase):
self.e = Etcd({'ttl': 30, 'host': 'remotehost', 'scope': 'test'})
self.ha = Ha(self.p, self.e)
self.ha.load_cluster_from_etcd()
self.ha.cluster = Cluster(None, None, [])
self.ha.cluster = Cluster(False, None, None, [])
self.ha.load_cluster_from_etcd = nop
def test_start_as_slave(self):
+1 -1
View File
@@ -142,7 +142,7 @@ class TestPostgresql(unittest.TestCase):
leader = Member('leader', 'postgres://replicator:[email protected]:5435/postgres', 28)
me = Member('test0', 'postgres://replicator:[email protected]:5434/postgres', 28)
other = Member('test1', 'postgres://replicator:[email protected]:5433/postgres', 28)
cluster = Cluster(leader, 0, [me, other, leader])
cluster = Cluster(True, leader, 0, [me, other, leader])
self.assertTrue(self.p.is_healthiest_node(cluster))
self.p.is_leader = false
self.assertFalse(self.p.is_healthiest_node(cluster))