2
0
mirror of https://github.com/frappe/frappe_docker.git synced 2024-12-23 10:38:58 +00:00

feat: ping additional services using doctor

doctor --ping-service postgres:5432 -p mariadb:3306
This commit is contained in:
Revant Nandgaonkar 2020-07-01 20:01:47 +05:30
parent ec9917ee78
commit 6dfb1de5c6
3 changed files with 52 additions and 10 deletions

View File

@ -53,18 +53,32 @@ def get_config():
return config
# Check mariadb
def check_mariadb(retry=10, delay=3, print_attempt=True):
# Check service
def check_service(
retry=10,
delay=3,
print_attempt=True,
service_name=None,
service_port=None):
config = get_config()
if not service_name:
service_name = config.get(DB_HOST_KEY, 'mariadb')
if not service_port:
service_port = config.get(DB_PORT_KEY, DB_PORT)
is_db_connected = False
is_db_connected = check_host(
config.get(DB_HOST_KEY, 'mariadb'),
config.get(DB_PORT_KEY, DB_PORT),
service_name,
service_port,
retry,
delay,
print_attempt)
if not is_db_connected:
print("Connection to MariaDB timed out")
print("Connection to {service_name}:{service_port} timed out".format(
service_name=service_name,
service_port=service_port,
))
exit(1)
@ -128,7 +142,7 @@ def get_site_config(site_name):
def main():
check_mariadb()
check_service()
check_redis_queue()
check_redis_cache()
check_redis_socketio()

View File

@ -1,20 +1,48 @@
import argparse
from check_connection import (
check_mariadb,
check_service,
check_redis_cache,
check_redis_queue,
check_redis_socketio,
)
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
'-p',
'--ping-service',
dest='ping_services',
action='append',
type=str,
help='list of services to ping, e.g. doctor -p "postgres:5432" --ping-service "mariadb:3306"',
)
args = parser.parse_args()
return args
def main():
check_mariadb(retry=1, delay=0, print_attempt=False)
print("MariaDB Connected")
args = parse_args()
check_service(retry=1, delay=0, print_attempt=False)
print("Bench database Connected")
check_redis_cache(retry=1, delay=0, print_attempt=False)
print("Redis Cache Connected")
check_redis_queue(retry=1, delay=0, print_attempt=False)
print("Redis Queue Connected")
check_redis_socketio(retry=1, delay=0, print_attempt=False)
print("Redis SocketIO Connected")
if(args.ping_services):
for service in args.ping_services:
service_name, service_port = service.split(':')
check_service(
retry=1,
delay=0,
print_attempt=False,
service_name=service_name,
service_port=service_port,
)
print("{0}:{1} Connected".format(service_name, service_port))
print("Health check successful")
exit(0)

View File

@ -154,7 +154,7 @@ elif [ "$1" = 'migrate' ]; then
elif [ "$1" = 'doctor' ]; then
su frappe -c ". /home/frappe/frappe-bench/env/bin/activate \
&& python /home/frappe/frappe-bench/commands/doctor.py"
&& python /home/frappe/frappe-bench/commands/doctor.py ${@:2}"
exit
elif [ "$1" = 'backup' ]; then