Initial commit - production deployment
This commit is contained in:
166
scripts/regenerate_all_migrations.sh
Executable file
166
scripts/regenerate_all_migrations.sh
Executable file
@@ -0,0 +1,166 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Convenience script: Clean databases and regenerate all migrations in one command
|
||||
# This wraps the two-step process into a single workflow
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Configuration
|
||||
NAMESPACE="${KUBE_NAMESPACE:-bakery-ia}"
|
||||
SKIP_CONFIRMATION=false
|
||||
APPLY_MIGRATIONS=false
|
||||
VERBOSE=false
|
||||
|
||||
# Parse command line arguments
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--namespace) NAMESPACE="$2"; shift 2 ;;
|
||||
--yes) SKIP_CONFIRMATION=true; shift ;;
|
||||
--apply) APPLY_MIGRATIONS=true; shift ;;
|
||||
--verbose) VERBOSE=true; shift ;;
|
||||
-h|--help)
|
||||
echo "Usage: $0 [OPTIONS]"
|
||||
echo ""
|
||||
echo "This script performs the complete migration regeneration workflow:"
|
||||
echo " 1. Clean all service databases"
|
||||
echo " 2. Generate new migrations from models"
|
||||
echo " 3. Optionally apply migrations"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " --namespace NAME Use specific Kubernetes namespace (default: bakery-ia)"
|
||||
echo " --yes Skip all confirmation prompts"
|
||||
echo " --apply Apply migrations after generation"
|
||||
echo " --verbose Enable detailed logging"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 # Interactive mode (with confirmations)"
|
||||
echo " $0 --yes --verbose # Automated mode with detailed output"
|
||||
echo " $0 --apply # Generate and apply migrations"
|
||||
exit 0
|
||||
;;
|
||||
*) echo "Unknown option: $1"; echo "Use --help for usage information"; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo -e "${BLUE}========================================${NC}"
|
||||
echo -e "${BLUE}Complete Migration Regeneration Workflow${NC}"
|
||||
echo -e "${BLUE}========================================${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}This script will:${NC}"
|
||||
echo -e "${YELLOW} 1. Clean all service databases (DROP all tables)${NC}"
|
||||
echo -e "${YELLOW} 2. Generate new migrations from models${NC}"
|
||||
if [ "$APPLY_MIGRATIONS" = true ]; then
|
||||
echo -e "${YELLOW} 3. Apply migrations to databases${NC}"
|
||||
fi
|
||||
echo ""
|
||||
echo -e "${YELLOW}Namespace: $NAMESPACE${NC}"
|
||||
echo ""
|
||||
|
||||
if [ "$SKIP_CONFIRMATION" = false ]; then
|
||||
echo -e "${RED}⚠ WARNING: This will DROP ALL TABLES in all service databases!${NC}"
|
||||
echo ""
|
||||
read -p "Continue? (yes/no) " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo -e "${YELLOW}Aborted.${NC}"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${BLUE}========================================${NC}"
|
||||
echo -e "${BLUE}Step 1: Cleaning Databases${NC}"
|
||||
echo -e "${BLUE}========================================${NC}"
|
||||
echo ""
|
||||
|
||||
# Build cleanup command
|
||||
CLEANUP_CMD="./cleanup_databases_k8s.sh --namespace $NAMESPACE"
|
||||
if [ "$SKIP_CONFIRMATION" = true ]; then
|
||||
CLEANUP_CMD="$CLEANUP_CMD --yes"
|
||||
fi
|
||||
|
||||
# Run cleanup
|
||||
if ! $CLEANUP_CMD; then
|
||||
echo -e "${RED}✗ Database cleanup failed!${NC}"
|
||||
echo -e "${YELLOW}Cannot proceed with migration generation.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}✓ Database cleanup completed${NC}"
|
||||
echo ""
|
||||
|
||||
# Wait a moment for database connections to settle
|
||||
sleep 2
|
||||
|
||||
echo -e "${BLUE}========================================${NC}"
|
||||
echo -e "${BLUE}Step 2: Generating Migrations${NC}"
|
||||
echo -e "${BLUE}========================================${NC}"
|
||||
echo ""
|
||||
|
||||
# Build migration command
|
||||
MIGRATION_CMD="./regenerate_migrations_k8s.sh --namespace $NAMESPACE"
|
||||
if [ "$VERBOSE" = true ]; then
|
||||
MIGRATION_CMD="$MIGRATION_CMD --verbose"
|
||||
fi
|
||||
if [ "$APPLY_MIGRATIONS" = true ]; then
|
||||
MIGRATION_CMD="$MIGRATION_CMD --apply"
|
||||
fi
|
||||
|
||||
# Run migration generation (with automatic 'y' response)
|
||||
if [ "$SKIP_CONFIRMATION" = true ]; then
|
||||
echo "y" | $MIGRATION_CMD
|
||||
else
|
||||
$MIGRATION_CMD
|
||||
fi
|
||||
|
||||
MIGRATION_EXIT_CODE=$?
|
||||
|
||||
echo ""
|
||||
if [ $MIGRATION_EXIT_CODE -eq 0 ]; then
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${GREEN}✓ Workflow Completed Successfully!${NC}"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}Summary:${NC}"
|
||||
echo -e " ${GREEN}✓${NC} Databases cleaned"
|
||||
echo -e " ${GREEN}✓${NC} Migrations generated"
|
||||
if [ "$APPLY_MIGRATIONS" = true ]; then
|
||||
echo -e " ${GREEN}✓${NC} Migrations applied"
|
||||
fi
|
||||
echo ""
|
||||
echo -e "${YELLOW}Generated migration files:${NC}"
|
||||
find services/*/migrations/versions/ -name "*.py" -type f -mmin -5 2>/dev/null | while read file; do
|
||||
size=$(wc -c < "$file" | tr -d ' ')
|
||||
echo -e " ${GREEN}✓${NC} $file ($size bytes)"
|
||||
done
|
||||
echo ""
|
||||
echo -e "${YELLOW}Next steps:${NC}"
|
||||
echo -e " 1. Review the generated migrations above"
|
||||
echo -e " 2. Verify migrations contain schema operations (not just 'pass')"
|
||||
if [ "$APPLY_MIGRATIONS" = false ]; then
|
||||
echo -e " 3. Apply migrations: ./regenerate_migrations_k8s.sh --apply"
|
||||
echo -e " 4. Commit migrations: git add services/*/migrations/versions/*.py"
|
||||
else
|
||||
echo -e " 3. Commit migrations: git add services/*/migrations/versions/*.py"
|
||||
fi
|
||||
else
|
||||
echo -e "${RED}========================================${NC}"
|
||||
echo -e "${RED}✗ Migration Generation Failed${NC}"
|
||||
echo -e "${RED}========================================${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}Check the log file for details.${NC}"
|
||||
echo -e "${YELLOW}Common issues:${NC}"
|
||||
echo -e " - Pod not running for some services"
|
||||
echo -e " - Database connectivity issues"
|
||||
echo -e " - Model import errors"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user