diff --git a/deploy/crdb.sh b/deploy/crdb.sh index 3e80b6350e66ec30a725c45acb7cf954ac3009c8..3fcbb5cfaa1cbfcfdef14e372a871a7dd545887b 100755 --- a/deploy/crdb.sh +++ b/deploy/crdb.sh @@ -154,8 +154,8 @@ function crdb_undeploy_single() { echo } -function crdb_drop_database_single() { - echo "Drop database if exists" +function crdb_drop_databases_single() { + echo "Drop TFS databases, if exist" if [[ -z "${GITLAB_CI}" ]]; then #kubectl --namespace ${CRDB_NAMESPACE} get service cockroachdb-public -o yaml @@ -168,9 +168,20 @@ function crdb_drop_database_single() { CRDB_CLIENT_URL="postgresql://${CRDB_USERNAME}:${CRDB_PASSWORD}@${CRDB_HOST}:${CRDB_PORT}/defaultdb?sslmode=require" echo "CRDB_CLIENT_URL=${CRDB_CLIENT_URL}" - kubectl exec -i --namespace ${CRDB_NAMESPACE} cockroachdb-0 -- \ - ./cockroach sql --certs-dir=/cockroach/cockroach-certs --url=${CRDB_CLIENT_URL} \ - --execute "DROP DATABASE IF EXISTS ${CRDB_DATABASE};" + + DATABASES=$( + kubectl exec -i --namespace ${CRDB_NAMESPACE} cockroachdb-0 -- \ + ./cockroach sql --certs-dir=/cockroach/cockroach-certs --url=${CRDB_CLIENT_URL} \ + --execute "SHOW DATABASES;" --format=tsv | awk '{print $1}' | grep "^tfs" + ) + echo "Found TFS databases: ${DATABASES}" | tr '\n' ' ' + + for DB_NAME in $DATABASES; do + echo "Dropping TFS database: $DB_NAME" + kubectl exec -i --namespace ${CRDB_NAMESPACE} cockroachdb-0 -- \ + ./cockroach sql --certs-dir=/cockroach/cockroach-certs --url=${CRDB_CLIENT_URL} \ + --execute="DROP DATABASE IF EXISTS $DB_NAME CASCADE;" + done echo } @@ -349,11 +360,22 @@ function crdb_undeploy_cluster() { echo } -function crdb_drop_database_cluster() { - echo "Drop database if exists" - kubectl exec -i --namespace ${CRDB_NAMESPACE} cockroachdb-client-secure -- \ - ./cockroach sql --certs-dir=/cockroach/cockroach-certs --host=cockroachdb-public --execute \ - "DROP DATABASE IF EXISTS ${CRDB_DATABASE};" +function crdb_drop_databases_cluster() { + echo "Drop TFS databases, if exist" + + DATABASES=$( + kubectl exec -i --namespace ${CRDB_NAMESPACE} cockroachdb-client-secure -- \ + ./cockroach sql --certs-dir=/cockroach/cockroach-certs --host=cockroachdb-public \ + --execute "SHOW DATABASES;" --format=tsv | awk '{print $1}' | grep "^tfs" + ) + echo "Found TFS databases: ${DATABASES}" | tr '\n' ' ' + + for DB_NAME in $DATABASES; do + echo "Dropping TFS database: $DB_NAME" + kubectl exec -i --namespace ${CRDB_NAMESPACE} cockroachdb-client-secure -- \ + ./cockroach sql --certs-dir=/cockroach/cockroach-certs --host=cockroachdb-public \ + --execute="DROP DATABASE IF EXISTS $DB_NAME CASCADE;" + done echo } @@ -365,7 +387,7 @@ if [ "$CRDB_DEPLOY_MODE" == "single" ]; then crdb_deploy_single if [ "$CRDB_DROP_DATABASE_IF_EXISTS" == "YES" ]; then - crdb_drop_database_single + crdb_drop_databases_single fi elif [ "$CRDB_DEPLOY_MODE" == "cluster" ]; then if [ "$CRDB_REDEPLOY" == "YES" ]; then @@ -375,7 +397,7 @@ elif [ "$CRDB_DEPLOY_MODE" == "cluster" ]; then crdb_deploy_cluster if [ "$CRDB_DROP_DATABASE_IF_EXISTS" == "YES" ]; then - crdb_drop_database_cluster + crdb_drop_databases_cluster fi else echo "Unsupported value: CRDB_DEPLOY_MODE=$CRDB_DEPLOY_MODE"