diff --git a/src/runboat/kubefiles/runboat-cleanup.sh b/src/runboat/kubefiles/runboat-cleanup.sh index da9b537..03289ac 100755 --- a/src/runboat/kubefiles/runboat-cleanup.sh +++ b/src/runboat/kubefiles/runboat-cleanup.sh @@ -3,3 +3,4 @@ set -ex dropdb --if-exists --force $PGDATABASE +dropdb --if-exists --force $PGDATABASE-baseonly diff --git a/src/runboat/kubefiles/runboat-initialize.sh b/src/runboat/kubefiles/runboat-initialize.sh index fbee98c..43c59df 100755 --- a/src/runboat/kubefiles/runboat-initialize.sh +++ b/src/runboat/kubefiles/runboat-initialize.sh @@ -11,13 +11,24 @@ bash /runboat/runboat-clone-and-install.sh oca_wait_for_postgres # Drop database, in case we are reinitializing. -dropdb --if-exists $PGDATABASE +dropdb --if-exists ${PGDATABASE} +dropdb --if-exists ${PGDATABASE}-baseonly ADDONS=$(manifestoo --select-addons-dir ${ADDONS_DIR} --select-include "${INCLUDE}" --select-exclude "${EXCLUDE}" list --separator=,) +# Try to install all addons, but do not fail in case of error, to let the build start +# so users can work with the 'baseonly' database. unbuffer $(which odoo || which openerp-server) \ --data-dir=/mnt/data/odoo-data-dir \ --db-template=template1 \ -d ${PGDATABASE} \ -i ${ADDONS:-base} \ - --stop-after-init + --stop-after-init || \ +# Create the baseonly database if installation failed. +(dropdb --if-exists ${PGDATABASE} && \ +unbuffer $(which odoo || which openerp-server) \ + --data-dir=/mnt/data/odoo-data-dir \ + --db-template=template1 \ + -d ${PGDATABASE}-baseonly \ + -i base \ + --stop-after-init) diff --git a/src/runboat/kubefiles/runboat-start.sh b/src/runboat/kubefiles/runboat-start.sh index 1ec567c..ef67bbd 100755 --- a/src/runboat/kubefiles/runboat-start.sh +++ b/src/runboat/kubefiles/runboat-start.sh @@ -14,6 +14,9 @@ fi # show what is installed (the venv in /opt/odoo-venv has been mounted) pip list +# Make sure users cannot create databases. +echo "admin_passwd=$(python3 -c 'import secrets; print(secrets.token_hex())')" >> ${ODOO_RC} + # Add ADDONS_DIR to addons_path (because that oca_install_addons did, # but $ODOO_RC is not on a persistent volume, so it is lost when we # start in another container). @@ -35,8 +38,6 @@ oca_wait_for_postgres # --db_user is necessary for Odoo <= 10 unbuffer $(which odoo || which openerp-server) \ --data-dir=/mnt/data/odoo-data-dir \ - --no-database-list \ - --database ${PGDATABASE} \ --db-filter=^${PGDATABASE} \ --db_user=${PGUSER} \ --smtp=localhost \