From 02404556cd5b19f6a913414cce41b060761559dd Mon Sep 17 00:00:00 2001 From: Ricardo Monla Date: Thu, 9 Apr 2026 21:10:45 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=8B=20Plan=20v3.4:=20F2.T1c=20atomizac?= =?UTF-8?q?i=C3=B3n=20rclone=20(1=20dron=20por=20nodo)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - F2.T2 marcado como completado (--on-error + --retries) - F2.T1c planificado: sync_rclone.rb listar() + ejecutar_uno() - Inventario: 17 nodos, ~260GB total - Progreso Fase 2: 80% --- .../dtic-ADN/A01.P009_Evolucion-Dron-ADN.md | 64 ++++++++++++++++--- 1 file changed, 56 insertions(+), 8 deletions(-) diff --git a/docs/ambito/dtic-ADN/A01.P009_Evolucion-Dron-ADN.md b/docs/ambito/dtic-ADN/A01.P009_Evolucion-Dron-ADN.md index 99c3add5..36d79739 100644 --- a/docs/ambito/dtic-ADN/A01.P009_Evolucion-Dron-ADN.md +++ b/docs/ambito/dtic-ADN/A01.P009_Evolucion-Dron-ADN.md @@ -4,7 +4,7 @@ > **Pertenece a**: [A01 - Ecosistema ADN](./A01_dtic-ADN.md) > **Fecha**: 2026-04-09 > **Responsable**: Lic. Ricardo MONLA -> **Versión**: 3.3 — Fase 2 orquestador implementado +> **Versión**: 3.4 — Fase 2: rclone atómico planificado --- @@ -14,7 +14,7 @@ Fase 0: ██████████ 100% Infraestructura de Datos (tablas internas) ✅ Fase 1: ██████████ 100% Atomicidad (bugs corregidos) ✅ Fase 1.5: ██████████ 100% Visibilidad Bitácora Web + Corrección Bugs ✅ -Fase 2: ███████░░░ 70% Composición — Orquestación de Flujos 🔧 +Fase 2: ████████░░ 80% Composición — Orquestación de Flujos 🔧 Fase 3: ░░░░░░░░░░ 0% Planificación — Drones Programados Fase 4: ░░░░░░░░░░ 0% Inteligencia de Colmena Fase 5: ░░░░░░░░░░ 0% Observabilidad — Dashboard y Métricas @@ -464,18 +464,66 @@ La **Bitácora Web** (`http://localhost:5174/bitacoras/`) muestra: ### Fase 2: Composición — Orquestación de Flujos (Dron 1.5) -**Objetivo:** Permitir composición de drones para flujos multi-paso. +**Objetivo:** Permitir composición de drones para flujos multi-paso. Aplicar "Menos es Más" a todos los procesadores — **1 Dron = 1 Unidad Atómica**. | ID | Tarea | Descripción | Estado | |:--:|-------|-------------|--------| | F2.T1 | `bkps orquestar` | Orquestación 1-dron-por-archivo (scan → lanzar secuencial) | ✅ | -| F2.T1a | `proc_xen.rb` | `listar()` + `ejecutar_uno()` + `--archivo` | ✅ | -| F2.T1b | `proc_proxmox.rb` | `listar()` + `ejecutar_uno()` + `--archivo` | ✅ | -| F2.T2 | Condicionales | `--on-error continue\|abort\|retry` | ⏳ | +| F2.T1a | `proc_xen.rb` | `listar()` + `ejecutar_uno()` — 1 dron por `.xva` | ✅ | +| F2.T1b | `proc_proxmox.rb` | `listar()` + `ejecutar_uno()` — 1 dron por set VM | ✅ | +| F2.T1c | `sync_rclone.rb` | `listar()` + `ejecutar_uno()` — 1 dron por directorio de nodo | ⏳ | +| F2.T2 | Condicionales | `--on-error continue\|abort\|retry` + `--retries N` | ✅ | | F2.T3 | Paralelismo | `--parallel` para pasos independientes | ⏳ | | F2.T4 | Contexto compartido | Variables entre pasos (`$DRON_OUTPUT_N`) | ⏳ | -**Implementado (F2.T1):** +#### F2.T1c — Atomización de Rclone (1 dron por nodo) + +**Problema actual:** +```bash +# MONOLITO: un solo rclone sync para ~260GB (17 nodos) +rclone sync /mnt/ns8Disco3/.../bkps-SERVIDORes/ rmOneDrive:/.../bkps-SERVIDORes/ +# Si falla en el nodo 15 de 17, hay que reiniciar TODO +``` + +**Solución AtomicDrones:** +```bash +# ATÓMICO: 1 dron por directorio de nodo +# Dron 1: rclone sync .../srvv-DNS/ → rmOneDrive:.../srvv-DNS/ (1.5GB) +# Dron 2: rclone sync .../srvv-KOHA/ → rmOneDrive:.../srvv-KOHA/ (9.7GB) +# ... +# Dron 17: rclone sync .../srv-SysACADWeb/ → rmOneDrive:.../srv-SysACADWeb/ (46GB) +``` + +**Implementación requerida en `sync_rclone.rb`:** + +| Método | Qué hace | +|--------|----------| +| `listar(tarea)` | Escanea subdirectorios del `origen`, retorna lista de `{nombre, ruta, tamaño}` | +| `ejecutar_uno(tarea, directorio)` | `rclone sync origen/NODO/ destino/NODO/` para un solo nodo | + +**Inventario de nodos (17 directorios, ~260GB total):** +``` + 8K pcv-DASU3 474M srvv-SITIO2 17G pcv-DASU2 + 648M srvv-UPTIME 966M srvv-N8N 18G pcv-SERVIIO + 1.5G srvv-DNS 6.9G srvv-SITIO 23G pcv-DASU1 + 7.5G srvv-DOCs 9.7G srvv-KOHA 27G srvv-DTIC + 13G srvv-DATA 14G srvv-SITIO0 37G srv-MauriK + 38G srvv-FENIX 46G srv-SysACADWeb +``` + +**Uso propuesto:** +```bash +# Dry-run: ver nodos pendientes de sync +./adn/tools/run bkps orquestar T5 --dry-run + +# Real: 1 dron por nodo, secuencial, con retry ante fallos de red +./adn/tools/run bkps orquestar T5 --on-error retry --retries 3 + +# Meta-orquestación: el orquestador mismo es un dron +./adn/tools/run dron lanzar --nota "Sync Nube Servidores" -- ./adn/tools/run bkps orquestar T5 --on-error retry +``` + +**Implementado (F2.T1a, F2.T1b):** ```bash # Dry-run: ver archivos pendientes ./adn/tools/run bkps orquestar T1 --dry-run @@ -487,7 +535,7 @@ La **Bitácora Web** (`http://localhost:5174/bitacoras/`) muestra: ./adn/tools/run dron lanzar --nota "Orquestar PMOX" -- ./adn/tools/run bkps orquestar T2 ``` -**Criterio de éxito:** Flujos complejos se expresan como composición de drones simples. +**Criterio de éxito:** Flujos complejos se expresan como composición de drones simples. Cada procesador (xen, proxmox, rclone) soporta `listar()` + `ejecutar_uno()` para orquestación atómica. ---