mirror of
https://github.com/outbackdingo/patroni.git
synced 2026-08-25 14:53:37 +00:00
Add initialize key into Cluster
This commit is contained in:
+5
-3
@@ -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
@@ -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):
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user