Add script for migrations
This commit is contained in:
parent
c297c7b545
commit
bb2868a583
3 changed files with 154 additions and 0 deletions
60
provisioning/move_apps.sh
Executable file
60
provisioning/move_apps.sh
Executable file
|
@ -0,0 +1,60 @@
|
|||
#!/bin/sh
|
||||
|
||||
cp cof/settings/secret.py gestioCOF/settings/secret.py
|
||||
|
||||
# Exit on error
|
||||
set -e
|
||||
|
||||
. provisioning/move_apps_helpers.sh
|
||||
|
||||
echo "-----"
|
||||
|
||||
echo "»»» Stopping services…"
|
||||
systemctl stop daphne
|
||||
systemctl stop worker
|
||||
|
||||
echo "»»» Updating database…"
|
||||
_psql <<SQL
|
||||
BEGIN;
|
||||
\echo Updating 'migrations' table…
|
||||
UPDATE django_migrations SET app='cof' WHERE app='gestioncof';
|
||||
|
||||
\echo Updating 'content_type' table…
|
||||
UPDATE django_content_type SET app_label='cof' WHERE app_label='gestioncof';
|
||||
|
||||
\echo Renaming gestioncof tables…
|
||||
DO
|
||||
\$\$
|
||||
DECLARE
|
||||
r record;
|
||||
BEGIN
|
||||
FOR r IN
|
||||
SELECT tablename FROM pg_tables
|
||||
WHERE schemaname='public' AND tablename LIKE 'gestioncof_%'
|
||||
LOOP
|
||||
EXECUTE '
|
||||
ALTER TABLE ' || quote_ident(r.tablename) || '
|
||||
RENAME TO ' || quote_ident(replace(r.tablename, 'gestioncof', 'cof'))
|
||||
;
|
||||
END LOOP;
|
||||
END
|
||||
\$\$;
|
||||
COMMIT;
|
||||
SQL
|
||||
|
||||
echo "»»» Symlink secrets…"
|
||||
|
||||
echo "»»» Updating services…"
|
||||
sed -i.bak -e 's/cof.settings/gestioCOF.settings/g; s/cof.asgi/gestioCOF.asgi/g' ${SERVICE_DAPHNE}
|
||||
sed -i.bak -e 's/cof.settings/gestioCOF.settings/g' ${SERVICE_WORKER}
|
||||
|
||||
echo "»»» Restarting services…"
|
||||
systemctl daemon-reload
|
||||
systemctl start worker
|
||||
systemctl start daphne
|
||||
|
||||
echo "-----"
|
||||
|
||||
echo "Looks Good To Me!!"
|
||||
|
||||
echo "If ok, you can delete '${SERVICE_DAPHNE}.bak' and '${SERVICE_WORKER}.bak'."
|
37
provisioning/move_apps_helpers.sh
Normal file
37
provisioning/move_apps_helpers.sh
Normal file
|
@ -0,0 +1,37 @@
|
|||
#!/bin/sh
|
||||
|
||||
_django_settings() {
|
||||
# Returns the value of a Django settings.
|
||||
echo $(python3 -c "
|
||||
import ${DJANGO_SETTINGS_MODULE} as settings
|
||||
print(settings.${1})")
|
||||
}
|
||||
|
||||
|
||||
DJANGO_SETTINGS_MODULE=${DJANGO_SETTINGS_MODULE:-gestioCOF.settings.dev}
|
||||
# Tests that module exists
|
||||
python3 -c "import ${DJANGO_SETTINGS_MODULE}"
|
||||
|
||||
echo "Django settings module: ${DJANGO_SETTINGS_MODULE}"
|
||||
|
||||
DBHOST=$(_django_settings DATABASES[\'default\'][\'HOST\'])
|
||||
DBNAME=$(_django_settings DATABASES[\'default\'][\'NAME\'])
|
||||
DBUSER=$(_django_settings DATABASES[\'default\'][\'USER\'])
|
||||
DBPASSWORD=$(_django_settings DATABASES[\'default\'][\'PASSWORD\'])
|
||||
|
||||
_psql() {
|
||||
PGPASSWORD=${DBPASSWORD} psql -h ${DBHOST} -d ${DBNAME} -U ${DBUSER} "$@"
|
||||
}
|
||||
|
||||
echo "Database: ${DBNAME}"
|
||||
|
||||
SERVICE_DIR=${SERVICES_DIR:-/etc/systemd/system}
|
||||
SERVICE_DAPHNE=${SERVICE_DIR}/${SERVICE_DAPHNE_FILENAME}
|
||||
SERVICE_WORKER=${SERVICE_DIR}/${SERVICE_WORKER_FILENAME}
|
||||
|
||||
[ -e ${SERVICE_DAPHNE} ] || exit 1
|
||||
[ -e ${SERVICE_WORKER} ] || exit 1
|
||||
|
||||
echo "Services:"
|
||||
echo " - Daphne: ${SERVICE_DAPHNE}"
|
||||
echo " - Worker: ${SERVICE_WORKER}"
|
57
provisioning/test_move_apps.sh
Normal file
57
provisioning/test_move_apps.sh
Normal file
|
@ -0,0 +1,57 @@
|
|||
#!/bin/bash
|
||||
|
||||
BRANCH_PRODUCTION="Production"
|
||||
BRANCH_WIP="aureplop/restructuring"
|
||||
|
||||
export SERVICE_DAPHNE_FILENAME="daphne.service"
|
||||
export SERVICE_WORKER_FILENAME="worker.service"
|
||||
export VENV_DIR="/home/ubuntu"
|
||||
|
||||
# Exit on error
|
||||
set -e
|
||||
|
||||
. provisioning/move_apps_helpers.sh
|
||||
|
||||
if [[ "$DJANGO_SETTINGS_MODULE" =~ "prod" ]] ;
|
||||
then
|
||||
echo "!!! Hint: Don't test me in production"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Notes:"
|
||||
echo " - The Vagrant DB data will be lost."
|
||||
|
||||
echo "-----"
|
||||
|
||||
echo "»»» Setup state, as of Production"
|
||||
|
||||
echo "- Checkout '$BRANCH_PRODUCTION'…"
|
||||
git checkout "$BRANCH_PRODUCTION"
|
||||
|
||||
echo "- Prepare database…"
|
||||
sudo -u postgres dropdb --if-exists $DBNAME
|
||||
sudo -u postgres createdb $DBNAME
|
||||
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DBNAME TO $DBUSER"
|
||||
|
||||
echo "- Prepare Django…"
|
||||
ln -s secret_example.py cof/settings/secret.py
|
||||
. ${VENV_DIR}/venv/bin/activate
|
||||
export DJANGO_SETTINGS_MODULE="cof.settings.dev"
|
||||
bash provisioning/prepare_django.sh
|
||||
|
||||
echo "- Checkout '$BRANCH_WIP'…"
|
||||
git checkout "$BRANCH_WIP"
|
||||
export DJANGO_SETTINGS_MODULE="gestioCOF.settings.dev"
|
||||
|
||||
echo "##### RUNNING move_apps.sh #####"
|
||||
|
||||
sh provisioning/move_apps.sh
|
||||
|
||||
# For production, use:
|
||||
# $ git pull
|
||||
# $ export DJANGO_SETTINGS_MODULE="gestioCOF.settings.prod"
|
||||
# $ sh provisioning/move_apps.sh
|
||||
|
||||
echo "############ ENDED #############"
|
||||
|
||||
# Add checks below this line
|
Loading…
Reference in a new issue