Skip to content

Commit 32554a4

Browse files
author
Meik Milevczik
committed
Improve code quality of check_redis_cluster.py
1 parent 0f65f9a commit 32554a4

1 file changed

Lines changed: 24 additions & 8 deletions

File tree

src/check_redis_cluster.py

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,26 @@
3232
from argparse import ArgumentParser
3333
from sys import exit
3434

35+
3536
def main():
3637
"""Main entrypoint for script"""
3738

3839
args = get_parser().parse_args()
3940

40-
master_addr, master_state, cluster_state_master, failed_master = _get_cluster_status(
41-
args.master_port, args.password)
42-
slave_addr, slave_state, cluster_state_slave, failed_slave = _get_cluster_status(
43-
args.slave_port, args.password)
41+
master_addr, master_state, cluster_state_master, failed_master = \
42+
_get_cluster_status(args.master_port, args.password)
43+
slave_addr, slave_state, cluster_state_slave, failed_slave = \
44+
_get_cluster_status(args.slave_port, args.password)
4445
if master_state != 'unknown' and slave_state != 'unknown':
46+
failed_hosts = failed_master + failed_slave
4547
if cluster_state_master != 'ok' and cluster_state_slave != 'ok':
4648
print('CRITICAL - cluster is broken')
4749
code = 2
48-
elif len(failed_master + failed_slave) > 0:
50+
elif failed_hosts:
4951
print('WARNING - cluster status is degraded')
50-
for host in failed_master + failed_slave:
52+
code = 1
53+
for host in failed_hosts:
5154
print('{} is in a failed state'.format(host))
52-
code = 1
5355
else:
5456
print('OK - cluster status is OK')
5557
print('{} - {}'.format(master_addr, master_state))
@@ -109,12 +111,26 @@ def _get_cluster_status(port, password):
109111
The status of the local instances will be checked
110112
"""
111113

114+
"""The output from redis-cli cluser nodes has the following format:
115+
6 lines where each line is a space seperated list with the following data:
116+
7a8517281ff3039a99fc28a9cd5b7bb5cded8dcf (hash of the node)
117+
10.44.1.13:7001@17001 (ip:port@remote port)
118+
slave,fail (master|slave)(,fail)?
119+
9a168ff82b0a87a7b0af78159e2efa6dec483a76 (remote node hash)
120+
1600863309527 (performance data)
121+
1600863307000 (performance data)
122+
2 (num clients)
123+
connected
124+
125+
The string ",fail" is optional. It will only exists on failed hosts
126+
"""
112127
try:
113128
role = subprocess.check_output(
114129
'redis-cli -p {0} -a {1} cluster nodes'.format(
115130
port, password), shell=True).decode().split()
116131
state_index = [i for i, s in enumerate(role) if 'myself' in s][0]
117-
failed_hosts = [role[i-1] for i, s in enumerate(role) if 'fail' in s and str(port) in role[i-1]]
132+
failed_hosts = [role[i-1] for i, s in enumerate(role)
133+
if 'fail' in s and str(port) in role[i-1]]
118134
role_state = role[state_index].replace('myself,', '')
119135
role_addr = role[state_index - 1]
120136

0 commit comments

Comments
 (0)