mirror of
https://github.com/kelroy1990/Homelabs-Pi-Storage.git
synced 2026-08-27 02:24:17 -05:00
115 lines
4.7 KiB
Python
115 lines
4.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Script de prueba para demostrar el comportamiento cuando solo BTRFS está disponible
|
|
"""
|
|
|
|
# Simular que solo BTRFS está disponible
|
|
def simulate_raid_tools_check():
|
|
"""Simula el resultado de _check_raid_tools con solo BTRFS disponible"""
|
|
return {
|
|
'btrfs': True, # BTRFS disponible
|
|
'zfs': False, # ZFS NO disponible
|
|
'mdadm': False # MDADM NO disponible
|
|
}
|
|
|
|
# Simular la lógica del RequirementsChecker
|
|
def test_selective_installation_logic():
|
|
print("🧪 SIMULACIÓN: Solo BTRFS disponible, ZFS y MDADM faltantes\n")
|
|
|
|
# Simular resultado de herramientas
|
|
raid_tools = simulate_raid_tools_check()
|
|
|
|
# Lógica mejorada
|
|
missing_tools = [tool for tool, available in raid_tools.items() if not available]
|
|
available_tools = [tool for tool, available in raid_tools.items() if available]
|
|
|
|
print("📊 Estado actual:")
|
|
print(f" ✅ Disponibles: {', '.join(tool.upper() for tool in available_tools)}")
|
|
print(f" ❌ Faltantes: {', '.join(tool.upper() for tool in missing_tools)}")
|
|
|
|
if not any(raid_tools.values()):
|
|
print("\n🚫 Escenario: Sin herramientas RAID")
|
|
print(" → Se ofrecería instalar todas las herramientas")
|
|
|
|
elif missing_tools:
|
|
print("\n⚙️ Escenario: Herramientas parciales")
|
|
print(" → Se ofrece instalar las faltantes específicamente")
|
|
print(f" 💡 Pregunta: ¿Deseas instalar las herramientas faltantes ({', '.join(tool.upper() for tool in missing_tools)})?")
|
|
|
|
# Simular respuestas
|
|
print("\n🔄 Opciones que se ofrecerían:")
|
|
for tool in missing_tools:
|
|
if tool == 'zfs':
|
|
print(" 📦 ZFS: ¿Instalar soporte para ZFS? (puede tomar varios minutos)")
|
|
elif tool == 'mdadm':
|
|
print(" 📦 MDADM: ¿Instalar soporte para MDADM?")
|
|
elif tool == 'btrfs':
|
|
print(" 📦 BTRFS: ¿Instalar soporte para BTRFS?")
|
|
|
|
else:
|
|
print("\n✅ Escenario: Todas las herramientas disponibles")
|
|
print(" → No se necesita instalación adicional")
|
|
|
|
# Simular diferentes escenarios
|
|
def test_different_scenarios():
|
|
scenarios = [
|
|
{
|
|
'name': 'Solo BTRFS disponible',
|
|
'tools': {'btrfs': True, 'zfs': False, 'mdadm': False}
|
|
},
|
|
{
|
|
'name': 'Solo ZFS disponible',
|
|
'tools': {'btrfs': False, 'zfs': True, 'mdadm': False}
|
|
},
|
|
{
|
|
'name': 'BTRFS y MDADM, falta ZFS',
|
|
'tools': {'btrfs': True, 'zfs': False, 'mdadm': True}
|
|
},
|
|
{
|
|
'name': 'Ninguna herramienta disponible',
|
|
'tools': {'btrfs': False, 'zfs': False, 'mdadm': False}
|
|
}
|
|
]
|
|
|
|
for scenario in scenarios:
|
|
print(f"\n{'='*60}")
|
|
print(f"🧪 ESCENARIO: {scenario['name']}")
|
|
print('='*60)
|
|
|
|
raid_tools = scenario['tools']
|
|
missing_tools = [tool for tool, available in raid_tools.items() if not available]
|
|
available_tools = [tool for tool, available in raid_tools.items() if available]
|
|
|
|
print(f"✅ Disponibles: {', '.join(tool.upper() for tool in available_tools) if available_tools else 'Ninguna'}")
|
|
print(f"❌ Faltantes: {', '.join(tool.upper() for tool in missing_tools) if missing_tools else 'Ninguna'}")
|
|
|
|
if not any(raid_tools.values()):
|
|
print("\n🚫 COMPORTAMIENTO:")
|
|
print(" → Error: No se pueden cumplir los requisitos mínimos")
|
|
print(" → Pregunta: ¿Deseas instalar las herramientas RAID necesarias?")
|
|
print(" → Instala: Herramientas básicas + BTRFS + (opcional) ZFS")
|
|
|
|
elif missing_tools:
|
|
print("\n⚙️ COMPORTAMIENTO:")
|
|
print(" → Info: Herramientas parciales disponibles")
|
|
print(f" → Pregunta: ¿Deseas instalar las herramientas faltantes ({', '.join(tool.upper() for tool in missing_tools)})?")
|
|
print(" → Instala: Solo las herramientas específicas que faltan")
|
|
|
|
else:
|
|
print("\n✅ COMPORTAMIENTO:")
|
|
print(" → Todo OK: Continúa sin instalación adicional")
|
|
|
|
if __name__ == "__main__":
|
|
print("🔍 ANÁLISIS DE COMPORTAMIENTO DE INSTALACIÓN SELECTIVA")
|
|
print("="*60)
|
|
|
|
test_selective_installation_logic()
|
|
test_different_scenarios()
|
|
|
|
print(f"\n{'='*60}")
|
|
print("📋 RESUMEN:")
|
|
print("✅ El sistema ahora detecta herramientas parciales")
|
|
print("✅ Ofrece instalación selectiva de solo lo que falta")
|
|
print("✅ Permite trabajar con herramientas disponibles")
|
|
print("✅ Da opciones granulares por cada herramienta")
|