c79711b6dc
### Description of Changes This is the last step in the four phase migration of the config
140 lines
3.6 KiB
Bash
Executable file
140 lines
3.6 KiB
Bash
Executable file
set -e
|
|
|
|
PARSED_DOCKER_HOST=`echo $DOCKER_HOST | sed 's/tcp:\/\///' | sed 's/:.*//'`
|
|
DOCKER_IP="${PARSED_DOCKER_HOST:-127.0.0.1}"
|
|
MYSQL_CONFIG_OVERRIDE="{\"DB_URI\":\"mysql+pymysql://root:password@$DOCKER_IP/genschema\"}"
|
|
PERCONA_CONFIG_OVERRIDE="{\"DB_URI\":\"mysql+pymysql://root:password@$DOCKER_IP/genschema\"}"
|
|
PGSQL_CONFIG_OVERRIDE="{\"DB_URI\":\"postgresql://postgres@$DOCKER_IP/genschema\"}"
|
|
|
|
up_mysql() {
|
|
# Run a SQL database on port 3306 inside of Docker.
|
|
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql
|
|
|
|
echo 'Sleeping for 25...'
|
|
sleep 25
|
|
|
|
# Add the database to mysql.
|
|
docker run --rm --link mysql:mysql mysql sh -c 'echo "create database genschema" | mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -ppassword'
|
|
}
|
|
|
|
down_mysql() {
|
|
docker kill mysql
|
|
docker rm -v mysql
|
|
}
|
|
|
|
up_mariadb() {
|
|
# Run a SQL database on port 3306 inside of Docker.
|
|
docker run --name mariadb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mariadb
|
|
|
|
echo 'Sleeping for 25...'
|
|
sleep 25
|
|
|
|
# Add the database to mysql.
|
|
docker run --rm --link mariadb:mariadb mariadb sh -c 'echo "create database genschema" | mysql -h"$MARIADB_PORT_3306_TCP_ADDR" -P"$MARIADB_PORT_3306_TCP_PORT" -uroot -ppassword'
|
|
}
|
|
|
|
down_mariadb() {
|
|
docker kill mariadb
|
|
docker rm -v mariadb
|
|
}
|
|
|
|
up_percona() {
|
|
# Run a SQL database on port 3306 inside of Docker.
|
|
docker run --name percona -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d percona
|
|
|
|
echo 'Sleeping for 25...'
|
|
sleep 25
|
|
|
|
# Add the daabase to mysql.
|
|
docker run --rm --link percona:percona percona sh -c 'echo "create database genschema" | mysql -h $PERCONA_PORT_3306_TCP_ADDR -uroot -ppassword'
|
|
}
|
|
|
|
down_percona() {
|
|
docker kill percona
|
|
docker rm -v percona
|
|
}
|
|
|
|
up_postgres() {
|
|
# Run a SQL database on port 5432 inside of Docker.
|
|
docker run --name postgres -p 5432:5432 -d postgres
|
|
|
|
# Sleep for 5s to get SQL get started.
|
|
echo 'Sleeping for 5...'
|
|
sleep 5
|
|
|
|
# Add the database to postgres.
|
|
docker run --rm --link postgres:postgres postgres sh -c 'echo "create database genschema" | psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres'
|
|
}
|
|
|
|
down_postgres() {
|
|
docker kill postgres
|
|
docker rm -v postgres
|
|
}
|
|
|
|
gen_migrate() {
|
|
# Generate a database with the schema as defined by the existing alembic model.
|
|
QUAY_OVERRIDE_CONFIG=$1 PYTHONPATH=. alembic upgrade head
|
|
|
|
|
|
# Generate the migration to the current model.
|
|
QUAY_OVERRIDE_CONFIG=$1 PYTHONPATH=. alembic revision --autogenerate -m "$2"
|
|
}
|
|
|
|
test_migrate() {
|
|
# Generate a database with the schema as defined by the existing alembic model.
|
|
echo '> Running upgrade'
|
|
QUAY_OVERRIDE_CONFIG=$1 PYTHONPATH=. alembic upgrade head
|
|
|
|
# Downgrade to verify it works in both directions.
|
|
echo '> Running downgrade'
|
|
COUNT=`ls data/migrations/versions/*.py | wc -l | tr -d ' '`
|
|
QUAY_OVERRIDE_CONFIG=$1 PYTHONPATH=. alembic downgrade "-$COUNT"
|
|
}
|
|
|
|
# Test (and generate, if requested) via MySQL.
|
|
echo '> Starting MySQL'
|
|
up_mysql
|
|
|
|
if [ ! -z "$@" ]
|
|
then
|
|
set +e
|
|
echo '> Generating Migration'
|
|
gen_migrate $MYSQL_CONFIG_OVERRIDE "$@"
|
|
set -e
|
|
fi
|
|
|
|
echo '> Testing Migration (mysql)'
|
|
set +e
|
|
test_migrate $MYSQL_CONFIG_OVERRIDE
|
|
set -e
|
|
down_mysql
|
|
|
|
# Test via Postgres.
|
|
echo '> Starting Postgres'
|
|
up_postgres
|
|
|
|
echo '> Testing Migration (postgres)'
|
|
set +e
|
|
test_migrate $PGSQL_CONFIG_OVERRIDE
|
|
set -e
|
|
down_postgres
|
|
|
|
# Test via MariaDB.
|
|
echo '> Starting MariaDB'
|
|
up_mariadb
|
|
|
|
echo '> Testing Migration (mariadb)'
|
|
set +e
|
|
test_migrate $MYSQL_CONFIG_OVERRIDE
|
|
set -e
|
|
down_mariadb
|
|
|
|
# Test via Percona.
|
|
echo '> Starting Percona'
|
|
up_percona
|
|
|
|
echo '> Testing Migration (percona)'
|
|
set +e
|
|
test_migrate $PERCONA_CONFIG_OVERRIDE
|
|
set -e
|
|
down_percona
|