From 9031e517bd391797971bb34e7924218351bd97e0 Mon Sep 17 00:00:00 2001 From: CodeByKyle Date: Sun, 9 Feb 2025 19:17:17 -0500 Subject: [PATCH 1/3] Update wait-for-psql.py Add a --database param which defaults to postgres --- 18.0/wait-for-psql.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/18.0/wait-for-psql.py b/18.0/wait-for-psql.py index a55f44098..42b7734cc 100755 --- a/18.0/wait-for-psql.py +++ b/18.0/wait-for-psql.py @@ -12,13 +12,21 @@ arg_parser.add_argument('--db_user', required=True) arg_parser.add_argument('--db_password', required=True) arg_parser.add_argument('--timeout', type=int, default=5) + arg_parser.add_argument('--database', default='postgres', required=False) args = arg_parser.parse_args() start_time = time.time() while (time.time() - start_time) < args.timeout: try: - conn = psycopg2.connect(user=args.db_user, host=args.db_host, port=args.db_port, password=args.db_password, dbname='postgres') + conn = psycopg2.connect( + user=args.db_user, + host=args.db_host, + port=args.db_port, + password=args.db_password, + dbname=args.database + ) + error = '' break except psycopg2.OperationalError as e: From 6818ec25e9e8ab5c1c68567f38affcc686809203 Mon Sep 17 00:00:00 2001 From: CodeByKyle Date: Sun, 9 Feb 2025 19:17:51 -0500 Subject: [PATCH 2/3] Update entrypoint.sh Add a database param which is removed if not set --- 18.0/entrypoint.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/18.0/entrypoint.sh b/18.0/entrypoint.sh index f802bcb25..767e96b2e 100755 --- a/18.0/entrypoint.sh +++ b/18.0/entrypoint.sh @@ -12,21 +12,30 @@ fi : ${PORT:=${DB_PORT_5432_TCP_PORT:=5432}} : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} +: ${DATABASE:=${DB_ENV_POSTGRES_DATABASE:=${POSTGRES_DATABASE}}} DB_ARGS=() function check_config() { param="$1" value="$2" - if grep -q -E "^\s*\b${param}\b\s*=" "$ODOO_RC" ; then + + if grep -q -E "^\s*\b${param}\b\s*=" "$ODOO_RC" ; then value=$(grep -E "^\s*\b${param}\b\s*=" "$ODOO_RC" |cut -d " " -f3|sed 's/["\n\r]//g') fi; + + if [[ "$param" == "database" && -z "$value" ]]; then + return + fi; + DB_ARGS+=("--${param}") DB_ARGS+=("${value}") } + check_config "db_host" "$HOST" check_config "db_port" "$PORT" check_config "db_user" "$USER" check_config "db_password" "$PASSWORD" +check_config "database" "$DATABASE" case "$1" in -- | odoo) From 0bfc0f78b161d971f59db9c91002f79b8f013a7b Mon Sep 17 00:00:00 2001 From: CodeByKyle Date: Sun, 9 Feb 2025 19:58:29 -0500 Subject: [PATCH 3/3] Support a list of databases to watch --- 18.0/wait-for-psql.py | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/18.0/wait-for-psql.py b/18.0/wait-for-psql.py index 42b7734cc..a2c579da3 100755 --- a/18.0/wait-for-psql.py +++ b/18.0/wait-for-psql.py @@ -4,7 +4,6 @@ import sys import time - if __name__ == '__main__': arg_parser = argparse.ArgumentParser() arg_parser.add_argument('--db_host', required=True) @@ -17,24 +16,28 @@ args = arg_parser.parse_args() start_time = time.time() - while (time.time() - start_time) < args.timeout: - try: - conn = psycopg2.connect( - user=args.db_user, - host=args.db_host, - port=args.db_port, - password=args.db_password, - dbname=args.database - ) + database_list = args.database.split(',') + + for database in database_list: + while (time.time() - start_time) < args.timeout: + try: + conn = psycopg2.connect( + user=args.db_user, + host=args.db_host, + port=args.db_port, + password=args.db_password, + dbname=database + ) + + error = '' + break + except psycopg2.OperationalError as e: + error = e + finally: + conn.close() - error = '' - break - except psycopg2.OperationalError as e: - error = e - else: - conn.close() - time.sleep(1) + if error: + print("Database connection failure: %s" % error, file=sys.stderr) + sys.exit(1) - if error: - print("Database connection failure: %s" % error, file=sys.stderr) - sys.exit(1) + time.sleep(1)