From 5740583e3817029d785d3a7ffd75739ddde3077d Mon Sep 17 00:00:00 2001 From: Josh Santos Date: Sun, 31 Mar 2024 17:52:18 -0400 Subject: [PATCH 1/7] Improvements for psql wait script. * support: Move to shared directory to avoid code drift. * feat: Make DB name configurable --- 15.0/wait-for-psql.py | 11 +++++++---- 16.0/wait-for-psql.py | 11 +++++++---- 17.0/wait-for-psql.py | 11 +++++++---- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/15.0/wait-for-psql.py b/15.0/wait-for-psql.py index a55f440..d0a66ea 100755 --- a/15.0/wait-for-psql.py +++ b/15.0/wait-for-psql.py @@ -10,21 +10,24 @@ if __name__ == '__main__': arg_parser.add_argument('--db_host', required=True) arg_parser.add_argument('--db_port', required=True) arg_parser.add_argument('--db_user', required=True) + arg_parser.add_argument('--db_name', required=True) arg_parser.add_argument('--db_password', required=True) arg_parser.add_argument('--timeout', type=int, default=5) args = arg_parser.parse_args() + conn = None start_time = time.time() + error = '' + 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') - error = '' + conn = psycopg2.connect(user=args.db_user, host=args.db_host, port=args.db_port, password=args.db_password, dbname=args.db_name) + conn.close() break except psycopg2.OperationalError as e: error = e - else: - conn.close() + time.sleep(1) if error: diff --git a/16.0/wait-for-psql.py b/16.0/wait-for-psql.py index a55f440..d0a66ea 100755 --- a/16.0/wait-for-psql.py +++ b/16.0/wait-for-psql.py @@ -10,21 +10,24 @@ if __name__ == '__main__': arg_parser.add_argument('--db_host', required=True) arg_parser.add_argument('--db_port', required=True) arg_parser.add_argument('--db_user', required=True) + arg_parser.add_argument('--db_name', required=True) arg_parser.add_argument('--db_password', required=True) arg_parser.add_argument('--timeout', type=int, default=5) args = arg_parser.parse_args() + conn = None start_time = time.time() + error = '' + 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') - error = '' + conn = psycopg2.connect(user=args.db_user, host=args.db_host, port=args.db_port, password=args.db_password, dbname=args.db_name) + conn.close() break except psycopg2.OperationalError as e: error = e - else: - conn.close() + time.sleep(1) if error: diff --git a/17.0/wait-for-psql.py b/17.0/wait-for-psql.py index a55f440..d0a66ea 100755 --- a/17.0/wait-for-psql.py +++ b/17.0/wait-for-psql.py @@ -10,21 +10,24 @@ if __name__ == '__main__': arg_parser.add_argument('--db_host', required=True) arg_parser.add_argument('--db_port', required=True) arg_parser.add_argument('--db_user', required=True) + arg_parser.add_argument('--db_name', required=True) arg_parser.add_argument('--db_password', required=True) arg_parser.add_argument('--timeout', type=int, default=5) args = arg_parser.parse_args() + conn = None start_time = time.time() + error = '' + 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') - error = '' + conn = psycopg2.connect(user=args.db_user, host=args.db_host, port=args.db_port, password=args.db_password, dbname=args.db_name) + conn.close() break except psycopg2.OperationalError as e: error = e - else: - conn.close() + time.sleep(1) if error: From 1a90a625d4b082f03df84ae268857824620f6443 Mon Sep 17 00:00:00 2001 From: Josh Santos Date: Sun, 31 Mar 2024 18:40:38 -0400 Subject: [PATCH 2/7] Update entrypoint to use new var Missed one change. --- 15.0/entrypoint.sh | 13 +++++++++++-- 16.0/entrypoint.sh | 13 +++++++++++-- 17.0/entrypoint.sh | 13 +++++++++++-- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/15.0/entrypoint.sh b/15.0/entrypoint.sh index f802bcb..ecb48fc 100755 --- a/15.0/entrypoint.sh +++ b/15.0/entrypoint.sh @@ -10,10 +10,13 @@ fi # and pass them as arguments to the odoo process if not present in the config file : ${HOST:=${DB_PORT_5432_TCP_ADDR:='db'}} : ${PORT:=${DB_PORT_5432_TCP_PORT:=5432}} +: ${NAME:=${DB_ENV_POSTGRES_NAME:=${POSTGRES_NAME:='postgres'}}} : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} +: ${SEED:=${DB_ENV_SEED:=false}} DB_ARGS=() +ODOO_ARGS=() function check_config() { param="$1" value="$2" @@ -23,11 +26,17 @@ function check_config() { DB_ARGS+=("--${param}") DB_ARGS+=("${value}") } + +check_config "db_name" "$NAME" check_config "db_host" "$HOST" check_config "db_port" "$PORT" check_config "db_user" "$USER" check_config "db_password" "$PASSWORD" +if "$SEED" ; then + ODOO_ARGS+=("-i base") +fi + case "$1" in -- | odoo) shift @@ -35,12 +44,12 @@ case "$1" in exec odoo "$@" else wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" + exec odoo "$@" "${DB_ARGS[@]}" "${ODOO_ARGS[@]}" fi ;; -*) wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" + exec odoo "$@" "${DB_ARGS[@]}" "${ODOO_ARGS[@]}" ;; *) exec "$@" diff --git a/16.0/entrypoint.sh b/16.0/entrypoint.sh index f802bcb..ecb48fc 100755 --- a/16.0/entrypoint.sh +++ b/16.0/entrypoint.sh @@ -10,10 +10,13 @@ fi # and pass them as arguments to the odoo process if not present in the config file : ${HOST:=${DB_PORT_5432_TCP_ADDR:='db'}} : ${PORT:=${DB_PORT_5432_TCP_PORT:=5432}} +: ${NAME:=${DB_ENV_POSTGRES_NAME:=${POSTGRES_NAME:='postgres'}}} : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} +: ${SEED:=${DB_ENV_SEED:=false}} DB_ARGS=() +ODOO_ARGS=() function check_config() { param="$1" value="$2" @@ -23,11 +26,17 @@ function check_config() { DB_ARGS+=("--${param}") DB_ARGS+=("${value}") } + +check_config "db_name" "$NAME" check_config "db_host" "$HOST" check_config "db_port" "$PORT" check_config "db_user" "$USER" check_config "db_password" "$PASSWORD" +if "$SEED" ; then + ODOO_ARGS+=("-i base") +fi + case "$1" in -- | odoo) shift @@ -35,12 +44,12 @@ case "$1" in exec odoo "$@" else wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" + exec odoo "$@" "${DB_ARGS[@]}" "${ODOO_ARGS[@]}" fi ;; -*) wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" + exec odoo "$@" "${DB_ARGS[@]}" "${ODOO_ARGS[@]}" ;; *) exec "$@" diff --git a/17.0/entrypoint.sh b/17.0/entrypoint.sh index f802bcb..ecb48fc 100755 --- a/17.0/entrypoint.sh +++ b/17.0/entrypoint.sh @@ -10,10 +10,13 @@ fi # and pass them as arguments to the odoo process if not present in the config file : ${HOST:=${DB_PORT_5432_TCP_ADDR:='db'}} : ${PORT:=${DB_PORT_5432_TCP_PORT:=5432}} +: ${NAME:=${DB_ENV_POSTGRES_NAME:=${POSTGRES_NAME:='postgres'}}} : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} +: ${SEED:=${DB_ENV_SEED:=false}} DB_ARGS=() +ODOO_ARGS=() function check_config() { param="$1" value="$2" @@ -23,11 +26,17 @@ function check_config() { DB_ARGS+=("--${param}") DB_ARGS+=("${value}") } + +check_config "db_name" "$NAME" check_config "db_host" "$HOST" check_config "db_port" "$PORT" check_config "db_user" "$USER" check_config "db_password" "$PASSWORD" +if "$SEED" ; then + ODOO_ARGS+=("-i base") +fi + case "$1" in -- | odoo) shift @@ -35,12 +44,12 @@ case "$1" in exec odoo "$@" else wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" + exec odoo "$@" "${DB_ARGS[@]}" "${ODOO_ARGS[@]}" fi ;; -*) wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" + exec odoo "$@" "${DB_ARGS[@]}" "${ODOO_ARGS[@]}" ;; *) exec "$@" From 40564ac1e5b7af009e0399de216cb69a20cfd4c6 Mon Sep 17 00:00:00 2001 From: Josh Santos Date: Sun, 31 Mar 2024 18:59:15 -0400 Subject: [PATCH 3/7] Need to reset error if success. --- 15.0/wait-for-psql.py | 1 + 16.0/wait-for-psql.py | 1 + 17.0/wait-for-psql.py | 1 + 3 files changed, 3 insertions(+) diff --git a/15.0/wait-for-psql.py b/15.0/wait-for-psql.py index d0a66ea..f8dbbd6 100755 --- a/15.0/wait-for-psql.py +++ b/15.0/wait-for-psql.py @@ -23,6 +23,7 @@ if __name__ == '__main__': 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.db_name) + error = '' conn.close() break except psycopg2.OperationalError as e: diff --git a/16.0/wait-for-psql.py b/16.0/wait-for-psql.py index d0a66ea..f8dbbd6 100755 --- a/16.0/wait-for-psql.py +++ b/16.0/wait-for-psql.py @@ -23,6 +23,7 @@ if __name__ == '__main__': 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.db_name) + error = '' conn.close() break except psycopg2.OperationalError as e: diff --git a/17.0/wait-for-psql.py b/17.0/wait-for-psql.py index d0a66ea..f8dbbd6 100755 --- a/17.0/wait-for-psql.py +++ b/17.0/wait-for-psql.py @@ -23,6 +23,7 @@ if __name__ == '__main__': 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.db_name) + error = '' conn.close() break except psycopg2.OperationalError as e: From 3f7c82d4fec67a2d0f81df825b9d8c85dc9280f2 Mon Sep 17 00:00:00 2001 From: Josh Santos Date: Sun, 31 Mar 2024 19:12:19 -0400 Subject: [PATCH 4/7] Remove SEED variable --- 15.0/entrypoint.sh | 10 ++-------- 16.0/entrypoint.sh | 10 ++-------- 17.0/entrypoint.sh | 10 ++-------- 3 files changed, 6 insertions(+), 24 deletions(-) diff --git a/15.0/entrypoint.sh b/15.0/entrypoint.sh index ecb48fc..73973c5 100755 --- a/15.0/entrypoint.sh +++ b/15.0/entrypoint.sh @@ -13,10 +13,8 @@ fi : ${NAME:=${DB_ENV_POSTGRES_NAME:=${POSTGRES_NAME:='postgres'}}} : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} -: ${SEED:=${DB_ENV_SEED:=false}} DB_ARGS=() -ODOO_ARGS=() function check_config() { param="$1" value="$2" @@ -33,10 +31,6 @@ check_config "db_port" "$PORT" check_config "db_user" "$USER" check_config "db_password" "$PASSWORD" -if "$SEED" ; then - ODOO_ARGS+=("-i base") -fi - case "$1" in -- | odoo) shift @@ -44,12 +38,12 @@ case "$1" in exec odoo "$@" else wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" "${ODOO_ARGS[@]}" + exec odoo "$@" "${DB_ARGS[@]}" fi ;; -*) wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" "${ODOO_ARGS[@]}" + exec odoo "$@" "${DB_ARGS[@]}" ;; *) exec "$@" diff --git a/16.0/entrypoint.sh b/16.0/entrypoint.sh index ecb48fc..73973c5 100755 --- a/16.0/entrypoint.sh +++ b/16.0/entrypoint.sh @@ -13,10 +13,8 @@ fi : ${NAME:=${DB_ENV_POSTGRES_NAME:=${POSTGRES_NAME:='postgres'}}} : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} -: ${SEED:=${DB_ENV_SEED:=false}} DB_ARGS=() -ODOO_ARGS=() function check_config() { param="$1" value="$2" @@ -33,10 +31,6 @@ check_config "db_port" "$PORT" check_config "db_user" "$USER" check_config "db_password" "$PASSWORD" -if "$SEED" ; then - ODOO_ARGS+=("-i base") -fi - case "$1" in -- | odoo) shift @@ -44,12 +38,12 @@ case "$1" in exec odoo "$@" else wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" "${ODOO_ARGS[@]}" + exec odoo "$@" "${DB_ARGS[@]}" fi ;; -*) wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" "${ODOO_ARGS[@]}" + exec odoo "$@" "${DB_ARGS[@]}" ;; *) exec "$@" diff --git a/17.0/entrypoint.sh b/17.0/entrypoint.sh index ecb48fc..73973c5 100755 --- a/17.0/entrypoint.sh +++ b/17.0/entrypoint.sh @@ -13,10 +13,8 @@ fi : ${NAME:=${DB_ENV_POSTGRES_NAME:=${POSTGRES_NAME:='postgres'}}} : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} -: ${SEED:=${DB_ENV_SEED:=false}} DB_ARGS=() -ODOO_ARGS=() function check_config() { param="$1" value="$2" @@ -33,10 +31,6 @@ check_config "db_port" "$PORT" check_config "db_user" "$USER" check_config "db_password" "$PASSWORD" -if "$SEED" ; then - ODOO_ARGS+=("-i base") -fi - case "$1" in -- | odoo) shift @@ -44,12 +38,12 @@ case "$1" in exec odoo "$@" else wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" "${ODOO_ARGS[@]}" + exec odoo "$@" "${DB_ARGS[@]}" fi ;; -*) wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" "${ODOO_ARGS[@]}" + exec odoo "$@" "${DB_ARGS[@]}" ;; *) exec "$@" From 6d3a90c7db8e00e1f85c5676cdc7c68bf0d0ab51 Mon Sep 17 00:00:00 2001 From: Josh Santos Date: Sun, 31 Mar 2024 21:02:18 -0400 Subject: [PATCH 5/7] Migrate to pg_isready --- 15.0/entrypoint.sh | 28 ++++++++++++++++++---------- 15.0/wait-for-psql.py | 36 ------------------------------------ 16.0/entrypoint.sh | 28 ++++++++++++++++++---------- 16.0/wait-for-psql.py | 36 ------------------------------------ 17.0/entrypoint.sh | 28 ++++++++++++++++++---------- 17.0/wait-for-psql.py | 36 ------------------------------------ 6 files changed, 54 insertions(+), 138 deletions(-) delete mode 100755 15.0/wait-for-psql.py delete mode 100755 16.0/wait-for-psql.py delete mode 100755 17.0/wait-for-psql.py diff --git a/15.0/entrypoint.sh b/15.0/entrypoint.sh index 73973c5..91e41a1 100755 --- a/15.0/entrypoint.sh +++ b/15.0/entrypoint.sh @@ -14,22 +14,30 @@ fi : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} +ODOO_ARGS=() DB_ARGS=() + function check_config() { param="$1" value="$2" + pg_flag="$3" + 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; - DB_ARGS+=("--${param}") + + ODOO_ARGS+=("--${param}") + ODOO_ARGS+=("${value}") + + DB_ARGS+=("${pg_flag}") DB_ARGS+=("${value}") } -check_config "db_name" "$NAME" -check_config "db_host" "$HOST" -check_config "db_port" "$PORT" -check_config "db_user" "$USER" -check_config "db_password" "$PASSWORD" +check_config "db_name" "$NAME" "-d" +check_config "db_host" "$HOST" "-h" +check_config "db_port" "$PORT" "-p" +check_config "db_user" "$USER" "-U" +# check_config "db_password" "$PASSWORD" case "$1" in -- | odoo) @@ -37,13 +45,13 @@ case "$1" in if [[ "$1" == "scaffold" ]] ; then exec odoo "$@" else - wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" + pg_isready ${DB_ARGS[@]} --timeout=30 + exec odoo "$@" "${ODOO_ARGS[@]}" fi ;; -*) - wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" + pg_isready ${DB_ARGS[@]} --timeout=30 + exec odoo "$@" "${ODOO_ARGS[@]}" ;; *) exec "$@" diff --git a/15.0/wait-for-psql.py b/15.0/wait-for-psql.py deleted file mode 100755 index f8dbbd6..0000000 --- a/15.0/wait-for-psql.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env python3 -import argparse -import psycopg2 -import sys -import time - - -if __name__ == '__main__': - arg_parser = argparse.ArgumentParser() - arg_parser.add_argument('--db_host', required=True) - arg_parser.add_argument('--db_port', required=True) - arg_parser.add_argument('--db_user', required=True) - arg_parser.add_argument('--db_name', required=True) - arg_parser.add_argument('--db_password', required=True) - arg_parser.add_argument('--timeout', type=int, default=5) - - args = arg_parser.parse_args() - - conn = None - start_time = time.time() - error = '' - - 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.db_name) - error = '' - conn.close() - break - except psycopg2.OperationalError as e: - error = e - - time.sleep(1) - - if error: - print("Database connection failure: %s" % error, file=sys.stderr) - sys.exit(1) diff --git a/16.0/entrypoint.sh b/16.0/entrypoint.sh index 73973c5..91e41a1 100755 --- a/16.0/entrypoint.sh +++ b/16.0/entrypoint.sh @@ -14,22 +14,30 @@ fi : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} +ODOO_ARGS=() DB_ARGS=() + function check_config() { param="$1" value="$2" + pg_flag="$3" + 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; - DB_ARGS+=("--${param}") + + ODOO_ARGS+=("--${param}") + ODOO_ARGS+=("${value}") + + DB_ARGS+=("${pg_flag}") DB_ARGS+=("${value}") } -check_config "db_name" "$NAME" -check_config "db_host" "$HOST" -check_config "db_port" "$PORT" -check_config "db_user" "$USER" -check_config "db_password" "$PASSWORD" +check_config "db_name" "$NAME" "-d" +check_config "db_host" "$HOST" "-h" +check_config "db_port" "$PORT" "-p" +check_config "db_user" "$USER" "-U" +# check_config "db_password" "$PASSWORD" case "$1" in -- | odoo) @@ -37,13 +45,13 @@ case "$1" in if [[ "$1" == "scaffold" ]] ; then exec odoo "$@" else - wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" + pg_isready ${DB_ARGS[@]} --timeout=30 + exec odoo "$@" "${ODOO_ARGS[@]}" fi ;; -*) - wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" + pg_isready ${DB_ARGS[@]} --timeout=30 + exec odoo "$@" "${ODOO_ARGS[@]}" ;; *) exec "$@" diff --git a/16.0/wait-for-psql.py b/16.0/wait-for-psql.py deleted file mode 100755 index f8dbbd6..0000000 --- a/16.0/wait-for-psql.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env python3 -import argparse -import psycopg2 -import sys -import time - - -if __name__ == '__main__': - arg_parser = argparse.ArgumentParser() - arg_parser.add_argument('--db_host', required=True) - arg_parser.add_argument('--db_port', required=True) - arg_parser.add_argument('--db_user', required=True) - arg_parser.add_argument('--db_name', required=True) - arg_parser.add_argument('--db_password', required=True) - arg_parser.add_argument('--timeout', type=int, default=5) - - args = arg_parser.parse_args() - - conn = None - start_time = time.time() - error = '' - - 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.db_name) - error = '' - conn.close() - break - except psycopg2.OperationalError as e: - error = e - - time.sleep(1) - - if error: - print("Database connection failure: %s" % error, file=sys.stderr) - sys.exit(1) diff --git a/17.0/entrypoint.sh b/17.0/entrypoint.sh index 73973c5..91e41a1 100755 --- a/17.0/entrypoint.sh +++ b/17.0/entrypoint.sh @@ -14,22 +14,30 @@ fi : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} +ODOO_ARGS=() DB_ARGS=() + function check_config() { param="$1" value="$2" + pg_flag="$3" + 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; - DB_ARGS+=("--${param}") + + ODOO_ARGS+=("--${param}") + ODOO_ARGS+=("${value}") + + DB_ARGS+=("${pg_flag}") DB_ARGS+=("${value}") } -check_config "db_name" "$NAME" -check_config "db_host" "$HOST" -check_config "db_port" "$PORT" -check_config "db_user" "$USER" -check_config "db_password" "$PASSWORD" +check_config "db_name" "$NAME" "-d" +check_config "db_host" "$HOST" "-h" +check_config "db_port" "$PORT" "-p" +check_config "db_user" "$USER" "-U" +# check_config "db_password" "$PASSWORD" case "$1" in -- | odoo) @@ -37,13 +45,13 @@ case "$1" in if [[ "$1" == "scaffold" ]] ; then exec odoo "$@" else - wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" + pg_isready ${DB_ARGS[@]} --timeout=30 + exec odoo "$@" "${ODOO_ARGS[@]}" fi ;; -*) - wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" + pg_isready ${DB_ARGS[@]} --timeout=30 + exec odoo "$@" "${ODOO_ARGS[@]}" ;; *) exec "$@" diff --git a/17.0/wait-for-psql.py b/17.0/wait-for-psql.py deleted file mode 100755 index f8dbbd6..0000000 --- a/17.0/wait-for-psql.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env python3 -import argparse -import psycopg2 -import sys -import time - - -if __name__ == '__main__': - arg_parser = argparse.ArgumentParser() - arg_parser.add_argument('--db_host', required=True) - arg_parser.add_argument('--db_port', required=True) - arg_parser.add_argument('--db_user', required=True) - arg_parser.add_argument('--db_name', required=True) - arg_parser.add_argument('--db_password', required=True) - arg_parser.add_argument('--timeout', type=int, default=5) - - args = arg_parser.parse_args() - - conn = None - start_time = time.time() - error = '' - - 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.db_name) - error = '' - conn.close() - break - except psycopg2.OperationalError as e: - error = e - - time.sleep(1) - - if error: - print("Database connection failure: %s" % error, file=sys.stderr) - sys.exit(1) From ed53a1e73a3eac81dc9cfd45a79063705bffc81a Mon Sep 17 00:00:00 2001 From: Josh Santos Date: Mon, 1 Apr 2024 08:06:37 -0400 Subject: [PATCH 6/7] db_password is required for Odoo to start --- 15.0/entrypoint.sh | 9 ++++++--- 16.0/entrypoint.sh | 9 ++++++--- 17.0/entrypoint.sh | 9 ++++++--- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/15.0/entrypoint.sh b/15.0/entrypoint.sh index 91e41a1..c0708bd 100755 --- a/15.0/entrypoint.sh +++ b/15.0/entrypoint.sh @@ -29,15 +29,18 @@ function check_config() { ODOO_ARGS+=("--${param}") ODOO_ARGS+=("${value}") - DB_ARGS+=("${pg_flag}") - DB_ARGS+=("${value}") + # Only add to DB_ARGS if pg_flag is set + if [[ -n "$pg_flag" ]]; then + DB_ARGS+=("${pg_flag}") + DB_ARGS+=("${value}") + fi } check_config "db_name" "$NAME" "-d" check_config "db_host" "$HOST" "-h" check_config "db_port" "$PORT" "-p" check_config "db_user" "$USER" "-U" -# check_config "db_password" "$PASSWORD" +check_config "db_password" "$PASSWORD" case "$1" in -- | odoo) diff --git a/16.0/entrypoint.sh b/16.0/entrypoint.sh index 91e41a1..c0708bd 100755 --- a/16.0/entrypoint.sh +++ b/16.0/entrypoint.sh @@ -29,15 +29,18 @@ function check_config() { ODOO_ARGS+=("--${param}") ODOO_ARGS+=("${value}") - DB_ARGS+=("${pg_flag}") - DB_ARGS+=("${value}") + # Only add to DB_ARGS if pg_flag is set + if [[ -n "$pg_flag" ]]; then + DB_ARGS+=("${pg_flag}") + DB_ARGS+=("${value}") + fi } check_config "db_name" "$NAME" "-d" check_config "db_host" "$HOST" "-h" check_config "db_port" "$PORT" "-p" check_config "db_user" "$USER" "-U" -# check_config "db_password" "$PASSWORD" +check_config "db_password" "$PASSWORD" case "$1" in -- | odoo) diff --git a/17.0/entrypoint.sh b/17.0/entrypoint.sh index 91e41a1..c0708bd 100755 --- a/17.0/entrypoint.sh +++ b/17.0/entrypoint.sh @@ -29,15 +29,18 @@ function check_config() { ODOO_ARGS+=("--${param}") ODOO_ARGS+=("${value}") - DB_ARGS+=("${pg_flag}") - DB_ARGS+=("${value}") + # Only add to DB_ARGS if pg_flag is set + if [[ -n "$pg_flag" ]]; then + DB_ARGS+=("${pg_flag}") + DB_ARGS+=("${value}") + fi } check_config "db_name" "$NAME" "-d" check_config "db_host" "$HOST" "-h" check_config "db_port" "$PORT" "-p" check_config "db_user" "$USER" "-U" -# check_config "db_password" "$PASSWORD" +check_config "db_password" "$PASSWORD" case "$1" in -- | odoo) From cf77605d0d1ee43281029c7cc5c228ebec545693 Mon Sep 17 00:00:00 2001 From: Josh Santos Date: Sun, 7 Apr 2024 19:33:17 -0400 Subject: [PATCH 7/7] Remove DB_NAME override --- 15.0/entrypoint.sh | 4 +--- 16.0/entrypoint.sh | 4 +--- 17.0/entrypoint.sh | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/15.0/entrypoint.sh b/15.0/entrypoint.sh index c0708bd..1687af2 100755 --- a/15.0/entrypoint.sh +++ b/15.0/entrypoint.sh @@ -10,12 +10,11 @@ fi # and pass them as arguments to the odoo process if not present in the config file : ${HOST:=${DB_PORT_5432_TCP_ADDR:='db'}} : ${PORT:=${DB_PORT_5432_TCP_PORT:=5432}} -: ${NAME:=${DB_ENV_POSTGRES_NAME:=${POSTGRES_NAME:='postgres'}}} : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} ODOO_ARGS=() -DB_ARGS=() +DB_ARGS=("-d" "postgres") function check_config() { param="$1" @@ -36,7 +35,6 @@ function check_config() { fi } -check_config "db_name" "$NAME" "-d" check_config "db_host" "$HOST" "-h" check_config "db_port" "$PORT" "-p" check_config "db_user" "$USER" "-U" diff --git a/16.0/entrypoint.sh b/16.0/entrypoint.sh index c0708bd..1687af2 100755 --- a/16.0/entrypoint.sh +++ b/16.0/entrypoint.sh @@ -10,12 +10,11 @@ fi # and pass them as arguments to the odoo process if not present in the config file : ${HOST:=${DB_PORT_5432_TCP_ADDR:='db'}} : ${PORT:=${DB_PORT_5432_TCP_PORT:=5432}} -: ${NAME:=${DB_ENV_POSTGRES_NAME:=${POSTGRES_NAME:='postgres'}}} : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} ODOO_ARGS=() -DB_ARGS=() +DB_ARGS=("-d" "postgres") function check_config() { param="$1" @@ -36,7 +35,6 @@ function check_config() { fi } -check_config "db_name" "$NAME" "-d" check_config "db_host" "$HOST" "-h" check_config "db_port" "$PORT" "-p" check_config "db_user" "$USER" "-U" diff --git a/17.0/entrypoint.sh b/17.0/entrypoint.sh index c0708bd..1687af2 100755 --- a/17.0/entrypoint.sh +++ b/17.0/entrypoint.sh @@ -10,12 +10,11 @@ fi # and pass them as arguments to the odoo process if not present in the config file : ${HOST:=${DB_PORT_5432_TCP_ADDR:='db'}} : ${PORT:=${DB_PORT_5432_TCP_PORT:=5432}} -: ${NAME:=${DB_ENV_POSTGRES_NAME:=${POSTGRES_NAME:='postgres'}}} : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} ODOO_ARGS=() -DB_ARGS=() +DB_ARGS=("-d" "postgres") function check_config() { param="$1" @@ -36,7 +35,6 @@ function check_config() { fi } -check_config "db_name" "$NAME" "-d" check_config "db_host" "$HOST" "-h" check_config "db_port" "$PORT" "-p" check_config "db_user" "$USER" "-U"