#!/bin/bash # Verification Script: Check if venv folders are in use # Run this script to verify nothing active depends on .venv or venv folders echo "==========================================" echo "IGNY8 Venv Dependency Verification Script" echo "==========================================" echo "" # Colors for output GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # No Color VENV_PATH="/data/app/igny8/backend/venv" DOTVENV_PATH="/data/app/igny8/backend/.venv" echo "Step 1: Check if any processes are using venv folders" echo "------------------------------------------------------" echo "Checking for processes with venv in command line..." ps aux | grep -E "(venv|\.venv)" | grep -v grep || echo -e "${GREEN}✓ No processes found using venv${NC}" echo "" echo "Step 2: Check if Python processes are running from venv" echo "------------------------------------------------------" echo "Checking Python processes..." ps aux | grep python | grep -v grep | while read line; do if echo "$line" | grep -qE "(venv|\.venv)"; then echo -e "${RED}✗ Found Python process using venv:${NC}" echo " $line" fi done echo -e "${GREEN}✓ No Python processes using venv found${NC}" echo "" echo "Step 3: Check if Docker containers reference venv" echo "------------------------------------------------------" echo "Checking Docker container mounts..." docker inspect $(docker ps -q) --format '{{.Name}}: {{range .Mounts}}{{.Source}} {{end}}' 2>/dev/null | grep -E "(venv|\.venv)" || echo -e "${GREEN}✓ No Docker containers mount venv folders${NC}" echo "" echo "Step 4: Check if any files are open/locked in venv folders" echo "------------------------------------------------------" echo "Checking for open file handles..." if command -v lsof >/dev/null 2>&1; then lsof +D "$VENV_PATH" 2>/dev/null | head -20 || echo -e "${GREEN}✓ No open files in venv/${NC}" lsof +D "$DOTVENV_PATH" 2>/dev/null | head -20 || echo -e "${GREEN}✓ No open files in .venv/${NC}" else echo -e "${YELLOW}⚠ lsof not available, skipping file handle check${NC}" fi echo "" echo "Step 5: Check if any scripts reference venv paths" echo "------------------------------------------------------" echo "Checking for venv references in shell scripts..." find /data/app/igny8 -name "*.sh" -type f 2>/dev/null | xargs grep -lE "(venv|\.venv)" 2>/dev/null | while read file; do echo -e "${YELLOW}⚠ Found reference in: $file${NC}" grep -nE "(venv|\.venv)" "$file" | head -3 done || echo -e "${GREEN}✓ No shell scripts reference venv${NC}" echo "" echo "Step 6: Check Docker container Python paths" echo "------------------------------------------------------" echo "Checking Python executable paths in containers..." for container in igny8_backend igny8_celery_worker igny8_celery_beat; do if docker ps --format '{{.Names}}' | grep -q "^${container}$"; then echo "Container: $container" docker exec "$container" which python3 2>/dev/null || echo " (container not accessible)" docker exec "$container" python3 -c "import sys; print('Python path:', sys.executable)" 2>/dev/null | grep -v "Python path:" || echo " (container not accessible)" docker exec "$container" sh -c 'echo $VIRTUAL_ENV' 2>/dev/null | grep -v "^$" && echo -e "${RED}✗ VIRTUAL_ENV is set${NC}" || echo -e "${GREEN} ✓ No VIRTUAL_ENV set${NC}" fi done echo "" echo "Step 7: Check if venv folders are in Dockerfile" echo "------------------------------------------------------" echo "Checking Dockerfile for venv references..." if [ -f "/data/app/igny8/backend/Dockerfile" ]; then grep -nE "(venv|\.venv)" /data/app/igny8/backend/Dockerfile 2>/dev/null && echo -e "${YELLOW}⚠ Found venv reference in Dockerfile${NC}" || echo -e "${GREEN}✓ No venv references in Dockerfile${NC}" else echo -e "${YELLOW}⚠ Dockerfile not found${NC}" fi echo "" echo "Step 8: Check docker-compose files for venv references" echo "------------------------------------------------------" echo "Checking docker-compose files..." find /data/app -name "docker-compose*.yml" -type f 2>/dev/null | while read file; do if grep -qE "(venv|\.venv)" "$file" 2>/dev/null; then echo -e "${YELLOW}⚠ Found reference in: $file${NC}" grep -nE "(venv|\.venv)" "$file" fi done || echo -e "${GREEN}✓ No venv references in docker-compose files${NC}" echo "" echo "Step 9: Verify containers are running correctly" echo "------------------------------------------------------" echo "Checking container health..." docker ps --format "table {{.Names}}\t{{.Status}}" | grep -E "(igny8_backend|igny8_frontend|igny8_celery)" | while read line; do if echo "$line" | grep -q "healthy\|Up"; then echo -e "${GREEN}✓ $line${NC}" else echo -e "${RED}✗ $line${NC}" fi done echo "" echo "Step 10: Test backend API endpoint (verify it works without venv)" echo "------------------------------------------------------" echo "Testing backend health endpoint..." response=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8011/api/v1/system/status/ 2>/dev/null) if [ "$response" = "200" ]; then echo -e "${GREEN}✓ Backend API is responding (HTTP $response)${NC}" else echo -e "${RED}✗ Backend API not responding (HTTP $response)${NC}" fi echo "" echo "Step 11: Check if venv folders exist and their sizes" echo "------------------------------------------------------" if [ -d "$VENV_PATH" ]; then size=$(du -sh "$VENV_PATH" 2>/dev/null | cut -f1) echo -e "${YELLOW}⚠ venv/ exists: $size${NC}" else echo -e "${GREEN}✓ venv/ does not exist${NC}" fi if [ -d "$DOTVENV_PATH" ]; then size=$(du -sh "$DOTVENV_PATH" 2>/dev/null | cut -f1) echo -e "${YELLOW}⚠ .venv/ exists: $size${NC}" else echo -e "${GREEN}✓ .venv/ does not exist${NC}" fi echo "" echo "==========================================" echo "Verification Complete" echo "==========================================" echo "" echo "Summary:" echo "- If all checks show ✓, venv folders are safe to delete" echo "- If any check shows ✗, investigate before deleting" echo "- If any check shows ⚠, review but likely safe" echo "" echo "To delete venv folders (if safe):" echo " rm -rf $VENV_PATH" echo " rm -rf $DOTVENV_PATH"