diff --git a/roles/odoo_scripts/files/docker-localhost-restore b/roles/odoo_scripts/files/docker-localhost-restore new file mode 100755 index 00000000..b4537eea --- /dev/null +++ b/roles/odoo_scripts/files/docker-localhost-restore @@ -0,0 +1,102 @@ +#!/bin/bash +set -e + +# Get script name +SCRIPT=$(basename "$0") +VERSION="1.0.1" + +# Display Help +Help() { + echo + echo "$SCRIPT" + echo + echo "Description: Backup Odoo database from container." + echo "Syntax: $SCRIPT [-d|-c|-f|-r|-u|-V|help]" + echo "Example: $SCRIPT -d erp-dev -c postgres01 -f tmp/erp.zip -r -p ~/.local/share/Odoo/filestore" + echo "options:" + echo " -d Database name. Defaults to filename." + echo " -c Postgres container. Defaults to 'odoo'." + echo " -f Odoo database backup file. Defaults to '/var/tmp/odoo.zip'." + echo " -r Replace existing database." + echo " -p Path to the filestore. Defaults to '~/.local/share/Odoo/filestore'" + echo " -V Show $SCRIPT version." + echo " help Show $SCRIPT manual." + echo +} + +# Show help and exit +if [[ "$1" == "help" ]]; then + Help + exit +fi + +# Check requiremements +command -v uuidgen >/dev/null 2>&1 || { echo >&2 "uuidgen not found: apt-get install uuid-runtime"; exit 1; } + +# Initialise option flag with a false value +REPLACE='false' + +# Process params +while getopts ":c: :d: :f: :r :p :V" opt; do + case $opt in + c) CONTAINER="$OPTARG";; + d) DATABASE="$OPTARG";; + f) FILE="$OPTARG";; + r) REPLACE='true';; + p) FILESTORE_PATH='true';; + V) echo "$SCRIPT version $VERSION" + exit 0 + ;; + \?) echo "Invalid option -$OPTARG" >&2 + Help + exit;; + esac +done + +# Fallback to environment vars and default values +: ${CONTAINER:='postgres'} +: ${FILE:='/var/tmp/odoo.zip'} +: ${FILESTORE_PATH:='~/.local/share/Odoo/filestore'} + +# Get file and directory name +DIR=`dirname "$FILE"` +FILENAME=`basename "$FILE"` +: ${DATABASE:="${FILENAME::-4}"} + +# Start restore +echo "Requesting restore for Odoo database from $FILENAME to $DATABASE ..." + +# Set alias +docker_exec_bash="docker exec -e DATABASE=$DATABASE $CONTAINER /bin/bash -c" +docker_exec_root_bash="docker exec --user root -e DATABASE=$DATABASE $CONTAINER /bin/bash -c" + +# Unip archive +echo "Unzip archive." +cd $DIR +unzip -q -o $FILENAME + +# Clear database +if $REPLACE; then + echo "Remove filestore $FILESTORE_PATH/$DATABASE." + rm -rf "$FILESTORE_PATH/$DATABASE" + docker-postgres-drop -c "$CONTAINER" -d "$DATABASE" +fi + +# Copy filestore +echo "Move filestore." +mv filestore "$FILESTORE_PATH/$DATABASE" + +# Create database +echo "Create database $DATABASE." +docker exec "$CONTAINER" /bin/bash -c "createdb -U \$POSTGRES_USER -T template0 $DATABASE" + +# Restore database +echo "Restore database from $DATABASE." +docker-postgres-restore -c "$CONTAINER" -d "$DATABASE" -f + +# Remove source files +echo "Cleanup source files." +rm -rf dump.sql filestore + +# Notify if backup has finished +echo "The restore for Odoo database $DATABASE has finished." diff --git a/roles/odoo_scripts/files/docker-odoo-restore b/roles/odoo_scripts/files/docker-odoo-restore index 4a6738cd..692f5ff3 100755 --- a/roles/odoo_scripts/files/docker-odoo-restore +++ b/roles/odoo_scripts/files/docker-odoo-restore @@ -15,7 +15,7 @@ Help() { echo "Example: $SCRIPT -d erp-dev -c odoo06 -f tmp/erp.zip -r" echo "options:" echo " -d Database name. Defaults to filename." - echo " -c Docker container. Defaults to 'odoo'." + echo " -c Odoo container. Defaults to 'odoo'." echo " -f Odoo database backup file. Defaults to '/var/tmp/odoo.zip'." echo " -r Replace existing database." echo " -u Update database uuid." diff --git a/roles/odoo_scripts/files/install b/roles/odoo_scripts/files/install index 212b8712..8f4931ec 100755 --- a/roles/odoo_scripts/files/install +++ b/roles/odoo_scripts/files/install @@ -25,7 +25,6 @@ SCRIPTS=( odoo-drop odoo-duplicate odoo-restore - odoo-user ) for SCRIPT in ${SCRIPTS[@]}; do diff --git a/roles/odoo_scripts/files/odoo-restore b/roles/odoo_scripts/files/odoo-restore index 2c54bf59..daae78bd 100755 --- a/roles/odoo_scripts/files/odoo-restore +++ b/roles/odoo_scripts/files/odoo-restore @@ -72,18 +72,7 @@ if [[ "${FILE: -3}" =~ "zip" ]]; then fi if $REPLACE; then - - # Ask for confirmation - read -p "Please confirm the deletion of $DATABASE on $ODOO_HOST (y/n)? " REPLY - if [[ $REPLY == y ]]; then - echo "Deleting Odoo database $DATABASE ..." - - curl \ - --silent \ - -F "master_pwd=${PASSWORD}" \ - -F "name=${DATABASE}" \ - ${ODOO_HOST%/}/web/database/drop | grep -q -E 'Internal Server Error|Redirecting...' - fi + odoo-drop -p "$ODOO_MASTER_PASSWORD" -d "$DATABASE" -h "$ODOO_HOST" fi # Start restore diff --git a/roles/odoo_scripts/files/odoo-user b/roles/odoo_scripts/files/odoo-user deleted file mode 100755 index c8ea5a1f..00000000 --- a/roles/odoo_scripts/files/odoo-user +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash -set -e - -# Get script name -SCRIPT=$(basename "$0") -VERSION="1.0.0" - -# Display Help -Help() { - echo - echo "$SCRIPT" - echo - echo "Description: Manage Odoo users." - echo "Syntax: $SCRIPT [-d|-a[enable,disable,list]|-i|-V|help]" - echo "Example: $SCRIPT -d erp-dev -a enable -id janikvonrot@mint-system.ch" - echo "options:" - echo " -d Database name. Defaults to 'odoo'." - echo " -a Action to perform." - echo " -i User account login id." - echo " -V Show $SCRIPT version." - echo " help Show $SCRIPT manual." - echo -} - -# Show help and exit -if [[ "$1" == "help" ]]; then - Help - exit -fi - -# Process params -while getopts ":d: :a: :i: :V" opt; do - case $opt in - d) PGDATABASE="$OPTARG";; - a) ACTION="$OPTARG";; - i) ID="$OPTARG";; - V) echo "$SCRIPT version $VERSION" - exit 0 - ;; - \?) echo "Invalid option -$OPTARG" >&2 - Help - exit;; - esac -done - -# Fallback to environment vars and default values -: ${PGHOST:='localhost'} -: ${PGDATABASE:='odoo'} -: ${PGUSER:='odoo'} -: ${PGPASSWORD:='odoo'} - -# Export environment variables for psql -export PGHOST -export PGDATABASE -export PGUSER -export PGPASSWORD - -# Verify variables -[[ -z "$ACTION" ]] && { echo "Parameter -a|action is empty" ; exit 1; } - -if [[ $ACTION == 'enable' ]]; then - [[ -z "$ID" ]] && { echo "Parameter -i|id is empty" ; exit 1; } - psql -c "UPDATE public.res_users SET active=true WHERE login='$ID';" - echo "Enabled user $ID on Odoo database $PGDATABASE." -fi - -if [[ $ACTION == 'disable' ]]; then - [[ -z "$ID" ]] && { echo "Parameter -i|id is empty" ; exit 1; } - psql -c "UPDATE public.res_users SET active=false WHERE login='$ID';" - echo "Disabled user $ID on Odoo database $PGDATABASE." -fi - -if [[ $ACTION == 'list' ]]; then - psql -c "SELECT login,active FROM public.res_users;" -fi diff --git a/roles/odoo_scripts/tasks/odoo_scripts.yml b/roles/odoo_scripts/tasks/odoo_scripts.yml index be494f6b..f3d5196d 100644 --- a/roles/odoo_scripts/tasks/odoo_scripts.yml +++ b/roles/odoo_scripts/tasks/odoo_scripts.yml @@ -26,7 +26,6 @@ - odoo-drop - odoo-duplicate - odoo-restore - - odoo-user - name: Remove deprecated {{ role_name }} ansible.builtin.file: diff --git a/scripts.md b/scripts.md index 39a77a24..2337cfc5 100644 --- a/scripts.md +++ b/scripts.md @@ -37,7 +37,6 @@ curl -L https://raw.githubusercontent.com/mint-system/ansible-build/main/roles/o - odoo-drop - odoo-duplicate - odoo-restore -- odoo-user ## [nginx](roles/nginx/README.md)