openreplay/scripts/helmcharts/openreplay/files/dbops.sh
Rajesh Rajendran 849aab89a5
fix(migration): regression (#1011)
fix
Signed-off-by: rjshrjndrn <rjshrjndrn@gmail.com>
2023-03-05 16:16:20 +01:00

107 lines
3 KiB
Bash

#!/bin/bash
set -x
cd $(dirname $0)
is_migrate=$1
# Converting alphaneumeric to number.
PREVIOUS_APP_VERSION=`echo $PREVIOUS_APP_VERSION | cut -d "v" -f2`
CHART_APP_VERSION=`echo $CHART_APP_VERSION | cut -d "v" -f2`
function migration() {
ls -la /opt/openreplay/openreplay
db=$1
# Checking if previous app version is set.
if [[ $PREVIOUS_APP_VERSION == "" ]]; then
echo "Previous app version to be migrated is not set. Rerun using --set fromVersion=v1.3.5"
exit 100
fi
if [[ $FORCE_MIGRATION == "true" ]]; then
echo "Forcing db migration from $PREVIOUS_APP_VERSION to $CHART_APP_VERSION"
# This is a special case where we force upgrade frontend
elif [[ $UPGRADE_FRONTENT == "true" ]]; then
echo "[WARN] Skipping regular upgrdades. Forcing frontend upgrade."
/bin/bash minio.sh migrate
exit 0
elif [[ $PREVIOUS_APP_VERSION == $CHART_APP_VERSION ]]; then
echo "No application version change. Not upgrading."
exit 0
fi
# Checking migration versions
cd /opt/openreplay/openreplay/scripts/schema
# We need to remove version dots
function normalise_version {
echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'
}
all_versions=(`ls -l db/init_dbs/$db | grep -E ^d | grep -v create | awk '{print $NF}'`)
migration_versions=(`for ver in ${all_versions[*]}; do if [[ $(normalise_version $ver) > $(normalise_version "${PREVIOUS_APP_VERSION}") ]]; then echo $ver; fi; done | sort -V`)
echo "Migration version: ${migration_versions[*]}"
# Can't pass the space seperated array to ansible for migration. So joining them with ,
joined_migration_versions=$(IFS=, ; echo "${migration_versions[*]}")
cd -
case "$1" in
postgresql)
/bin/bash postgresql.sh migrate $joined_migration_versions
;;
minio)
/bin/bash minio.sh migrate $joined_migration_versions
;;
clickhouse)
/bin/bash clickhouse.sh migrate $joined_migration_versions
;;
kafka)
/bin/bash kafka.sh migrate $joined_migration_versions
;;
*)
echo "Unknown operation for db migration; exiting."
exit 1
;;
esac
}
function init(){
case $1 in
postgresql)
/bin/bash postgresql.sh init
;;
minio)
/bin/bash minio.sh migrate $migration_versions
;;
clickhouse)
/bin/bash clickhouse.sh init
;;
kafka)
/bin/bash kafka.sh init
;;
*)
echo "Unknown operation for db init; exiting."
exit 1
;;
esac
}
if [[ $FORCE_MIGRATION == "true" ]]; then
is_migrate=true
fi
# dbops.sh true(upgrade) clickhouse
case "$is_migrate" in
"false")
init $2
;;
"true")
migration $2
;;
*)
echo "Unknown operation for db migration; exiting."
exit 1
;;
esac