Files
proxmox/scripts/comprehensive-review.sh.bak

262 lines
6.6 KiB
Bash
Raw Permalink Normal View History

#!/usr/bin/env bash
# Comprehensive Review Script
# Checks for inconsistencies, gaps, and dependency issues across the project
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
REPORT_FILE="$PROJECT_ROOT/logs/comprehensive-review-$(date +%Y%m%d-%H%M%S).md"
mkdir -p "$PROJECT_ROOT/logs"
{
cat << 'EOF'
# Comprehensive Project Review Report
Generated: $(date)
## Summary
This report identifies:
- VMID inconsistencies
- IP address inconsistencies
- Configuration gaps
- Missing dependencies
- Unreferenced or obsolete files
---
## 1. VMID Consistency
### Expected VMID Ranges
- **Validators**: 1000-1004 (5 nodes)
- **Sentries**: 1500-1503 (4 nodes)
- **RPC**: 2500-2502 (3 nodes)
### Issues Found
EOF
echo "### Files with Old VMIDs (106-117)"
echo ""
grep -rE "\b(106|107|108|109|110|111|112|113|114|115|116|117)\b" \
"$PROJECT_ROOT/smom-dbis-138-proxmox/" "$PROJECT_ROOT/docs/" 2>/dev/null | \
grep -v node_modules | grep -v ".git" | \
grep -v "EXPECTED_CONTAINERS.md" | \
grep -v "VMID_ALLOCATION.md" | \
grep -v "HISTORICAL" | \
cut -d: -f1 | sort -u | while read -r file; do
echo "- \`$file\`"
done
echo ""
echo "---"
echo ""
echo "## 2. IP Address Consistency"
echo ""
echo "### Expected IP Range"
echo "- Base subnet: 192.168.11.0/24"
echo "- Validators: 192.168.11.100-104"
echo "- Sentries: 192.168.11.150-153"
echo "- RPC: 192.168.11.250-252"
echo ""
echo "### Files with Old IPs (10.3.1.X)"
echo ""
grep -rE "10\.3\.1\." "$PROJECT_ROOT/smom-dbis-138-proxmox/" "$PROJECT_ROOT/docs/" 2>/dev/null | \
grep -v node_modules | grep -v ".git" | \
cut -d: -f1 | sort -u | while read -r file; do
echo "- \`$file\`"
done
echo ""
echo "---"
echo ""
echo "## 3. Configuration Gaps"
echo ""
# Check for missing config files
if [[ ! -f "$PROJECT_ROOT/smom-dbis-138-proxmox/config/proxmox.conf" ]]; then
echo "- ❌ Missing: \`config/proxmox.conf\`"
else
echo "- ✅ Found: \`config/proxmox.conf\`"
fi
if [[ ! -f "$PROJECT_ROOT/smom-dbis-138-proxmox/config/network.conf" ]]; then
echo "- ❌ Missing: \`config/network.conf\`"
else
echo "- ✅ Found: \`config/network.conf\`"
fi
echo ""
echo "### Key Configuration Variables Check"
echo ""
# Source config to check variables
if [[ -f "$PROJECT_ROOT/smom-dbis-138-proxmox/config/proxmox.conf" ]]; then
source "$PROJECT_ROOT/smom-dbis-138-proxmox/config/proxmox.conf" 2>/dev/null || true
if [[ "${VALIDATOR_COUNT:-}" != "5" ]]; then
echo "- ⚠️ VALIDATOR_COUNT=${VALIDATOR_COUNT:-not set} (expected: 5)"
else
echo "- ✅ VALIDATOR_COUNT=5"
fi
if [[ "${SENTRY_COUNT:-}" != "4" ]]; then
echo "- ⚠️ SENTRY_COUNT=${SENTRY_COUNT:-not set} (expected: 4)"
else
echo "- ✅ SENTRY_COUNT=4"
fi
if [[ "${RPC_COUNT:-}" != "3" ]]; then
echo "- ⚠️ RPC_COUNT=${RPC_COUNT:-not set} (expected: 3)"
else
echo "- ✅ RPC_COUNT=3"
fi
fi
echo ""
echo "---"
echo ""
echo "## 4. Dependencies Review"
echo ""
echo "### Required Tools"
echo ""
# Check for required tools
REQUIRED_TOOLS=(
"pct:Proxmox Container Toolkit"
"jq:JSON processor"
"sshpass:SSH password authentication"
"timeout:Command timeout utility"
"openssl:OpenSSL toolkit"
"curl:HTTP client"
"wget:File downloader"
)
for tool_info in "${REQUIRED_TOOLS[@]}"; do
tool=$(echo "$tool_info" | cut -d: -f1)
desc=$(echo "$tool_info" | cut -d: -f2)
if command -v "$tool" >/dev/null 2>&1; then
echo "- ✅ $tool ($desc)"
else
echo "- ❌ $tool ($desc) - MISSING"
fi
done
echo ""
echo "### Optional Tools"
echo ""
OPTIONAL_TOOLS=(
"quorum-genesis-tool:Genesis configuration generator"
"besu:Hyperledger Besu client"
)
for tool_info in "${OPTIONAL_TOOLS[@]}"; do
tool=$(echo "$tool_info" | cut -d: -f1)
desc=$(echo "$tool_info" | cut -d: -f2)
if command -v "$tool" >/dev/null 2>&1; then
echo "- ✅ $tool ($desc)"
else
echo "- ⚠️ $tool ($desc) - Optional (for key generation)"
fi
done
echo ""
echo "---"
echo ""
echo "## 5. Script Dependencies"
echo ""
echo "### Scripts Checking for Dependencies"
echo ""
# Find scripts that check for tools
grep -rE "(command -v|which|command_exists)" "$PROJECT_ROOT/smom-dbis-138-proxmox/scripts/" 2>/dev/null | \
grep -v ".git" | cut -d: -f1 | sort -u | while read -r file; do
echo "- \`$file\`"
done
echo ""
echo "---"
echo ""
echo "## 6. Missing or Incomplete Files"
echo ""
# Check for common missing files
MISSING_CHECKS=(
"smom-dbis-138-proxmox/scripts/copy-besu-config.sh:Configuration copy script"
"smom-dbis-138-proxmox/scripts/network/bootstrap-network.sh:Network bootstrap script"
"smom-dbis-138-proxmox/scripts/validation/validate-deployment-comprehensive.sh:Deployment validation script"
)
for check in "${MISSING_CHECKS[@]}"; do
file=$(echo "$check" | cut -d: -f1)
desc=$(echo "$check" | cut -d: -f2)
if [[ -f "$PROJECT_ROOT/$file" ]]; then
echo "- ✅ $desc: \`$file\`"
else
echo "- ❌ Missing: $desc - \`$file\`"
fi
done
echo ""
echo "---"
echo ""
echo "## 7. Documentation Inconsistencies"
echo ""
echo "### Documents with Outdated VMID References"
echo ""
# Check documentation files
OLD_VMID_DOCS=(
"docs/EXPECTED_CONTAINERS.md:References old VMIDs (106-117)"
"docs/VMID_ALLOCATION.md:Contains historical VMID ranges (1100-1122)"
)
for doc_info in "${OLD_VMID_DOCS[@]}"; do
doc=$(echo "$doc_info" | cut -d: -f1)
issue=$(echo "$doc_info" | cut -d: -f2)
if [[ -f "$PROJECT_ROOT/$doc" ]]; then
echo "- ⚠️ \`$doc\` - $issue"
fi
done
echo ""
echo "---"
echo ""
echo "## Recommendations"
echo ""
echo "1. Update files with old VMID references to use current ranges (1000-1004, 1500-1503, 2500-2502)"
echo "2. Update files with old IP addresses (10.3.1.X) to use new range (192.168.11.X)"
echo "3. Review and update historical documentation files"
echo "4. Ensure all required tools are installed on deployment hosts"
echo "5. Verify configuration file consistency across all scripts"
echo ""
} > "$REPORT_FILE"
log_info "========================================="
log_info "Comprehensive Review Complete"
log_info "========================================="
log_info "Report saved to: $REPORT_FILE"
log_info ""
cat "$REPORT_FILE"