Skip to content

Commit

Permalink
Fixed an issue where servers listed in the servers.json file were bei…
Browse files Browse the repository at this point in the history
…ng reimported upon container restart. #7811
  • Loading branch information
pravesh-sharma committed Sep 11, 2024
1 parent d838191 commit b6b63ea
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 1 deletion.
8 changes: 7 additions & 1 deletion pkg/docker/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,13 @@ EOF
done
fi

if [ ! -f /var/lib/pgadmin/pgadmin4.db ]; then
# Check whether the external configuration database exists if it is being used.
external_config_db_exists="False"
if [ -n "${PGADMIN_CONFIG_CONFIG_DATABASE_URI}" ]; then
external_config_db_exists=$(cd /pgadmin4/pgadmin/utils && /venv/bin/python3 -c "from check_external_config_db import check_external_config_db; val = check_external_config_db(${PGADMIN_CONFIG_CONFIG_DATABASE_URI}); print(val)")
fi

if [ ! -f /var/lib/pgadmin/pgadmin4.db ] && [ "${external_config_db_exists}" = "False" ]; then
if [ -z "${PGADMIN_DEFAULT_EMAIL}" ] || { [ -z "${PGADMIN_DEFAULT_PASSWORD}" ] && [ -z "${PGADMIN_DEFAULT_PASSWORD_FILE}" ]; }; then
echo 'You need to define the PGADMIN_DEFAULT_EMAIL and PGADMIN_DEFAULT_PASSWORD or PGADMIN_DEFAULT_PASSWORD_FILE environment variables.'
exit 1
Expand Down
27 changes: 27 additions & 0 deletions web/pgadmin/utils/check_external_config_db.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
##########################################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2024, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
##########################################################################

from sqlalchemy import create_engine, inspect


def check_external_config_db(database_uri):
"""
Check if external config database exists if it
is being used.
"""
engine = create_engine(database_uri)
try:
connection = engine.connect()
if inspect(engine).has_table("server"):
return True
return False
except Exception:
return False
finally:
connection.close()

0 comments on commit b6b63ea

Please sign in to comment.