Merge pull request #104 from zalando/feature/patroni_cli_or_ctl_tbd

Bugfixes for Patronictl and the Development Docker environment
This commit is contained in:
Feike Steenbergen
2015-11-25 16:23:25 +01:00
2 changed files with 13 additions and 9 deletions
+3 -2
View File
@@ -93,7 +93,7 @@ etcd:
ttl: *ttl
host: ${ETCD_CLUSTER}
postgresql:
name: postgresql_${DOCKER_IP//./_} ## Replication slots do not allow dots in their name
name: ${HOSTNAME}
scope: *scope
listen: 0.0.0.0:5432
connect_address: ${DOCKER_IP}:5432
@@ -119,7 +119,8 @@ postgresql:
archive_command: 'true'
max_wal_senders: 20
listen_addresses: 0.0.0.0
wal_keep_segments: 8
checkpoint_segments: 64
wal_keep_segments: 64
archive_timeout: 1800s
max_replication_slots: 20
hot_standby: "on"
+10 -7
View File
@@ -111,7 +111,7 @@ def post_patroni(member, endpoint, content, headers={'Content-Type': 'applicatio
url = urlparse(member.api_url)
logging.debug(url)
return requests.post('{}://{}/{}'.format(url.scheme, url.netloc, endpoint), headers=headers,
data=json.dumps(content), timeout=5)
data=json.dumps(content), timeout=60)
def print_output(columns, rows=[], alignment=None, format='pretty', header=True, delimiter='\t'):
@@ -506,7 +506,7 @@ def failover(config_file, cluster_name, master, candidate, force, dcs):
t_started = time.time()
r = None
try:
r = post_patroni(cluster.leader.member, 'failover', {'leader': master, 'candidate': candidate or ''})
r = post_patroni(cluster.leader.member, 'failover', {'leader': master, 'member': candidate or ''})
if r.status_code == 200:
logging.debug(r)
logging.debug(r.text)
@@ -540,6 +540,8 @@ def output_members(cluster, name=None, format='pretty'):
if cluster.leader:
leader_name = cluster.leader.member.name
xlog_location_cluster = cluster.last_leader_operation or 0
# Mainly for consistent pretty printing and watching we sort the output
cluster.members.sort(key=lambda x: x.name)
for m in cluster.members:
@@ -552,9 +554,10 @@ def output_members(cluster, name=None, format='pretty'):
host = build_connect_parameters(m.conn_url)['host']
xlog_location = m.data.get('xlog_location')
lag = ''
if xlog_location is not None:
lag = round(((cluster.last_leader_operation or 0) - m.data.get('xlog_location', 0)) / 1024 / 1024)
if xlog_location is None or (xlog_location_cluster < xlog_location):
lag = ''
else:
lag = round((xlog_location_cluster - xlog_location)/1024/1024)
rows.append([
name,
@@ -562,7 +565,7 @@ def output_members(cluster, name=None, format='pretty'):
host,
leader,
m.data.get('state', ''),
lag,
lag
])
columns = [
@@ -573,7 +576,7 @@ def output_members(cluster, name=None, format='pretty'):
'State',
'Lag in MB',
]
alignment = {'Cluster': 'l', 'Member': 'l', 'Host': 'l'}
alignment = {'Cluster': 'l', 'Member': 'l', 'Host': 'l', 'Lag in MB': 'r'}
print_output(columns, rows, alignment, format)