diff --git a/adn/tools/cli/nodos.rb b/adn/tools/cli/nodos.rb index 264289eb..bd6fdc68 100644 --- a/adn/tools/cli/nodos.rb +++ b/adn/tools/cli/nodos.rb @@ -29,6 +29,8 @@ module ADN accion = @args.shift case accion + when 'info' + info_nodo when 'agrupar' agrupar_nodos when 'listar' @@ -53,6 +55,7 @@ module ADN #{Color::YELLOW}Uso:#{Color::RESET} ./adn/tools/run nodos [opciones] #{Color::YELLOW}Acciones:#{Color::RESET} + info Mostrar metadata completa de un nodo agrupar [--servidor SRV] Agrupar VMs por servidor anfitrión listar [--tipo TIPO] Listar todos los nodos (fichas .md) buscar Buscar nodos por nombre o contenido @@ -64,6 +67,7 @@ module ADN --tipo TIPO Filtrar por prefijo (srv, srvv, pcv, pc, cam, dc, sql) #{Color::YELLOW}Ejemplos:#{Color::RESET} + ./adn/tools/run nodos info srv-dasu ./adn/tools/run nodos agrupar ./adn/tools/run nodos agrupar --servidor srv-pmox1 ./adn/tools/run nodos listar @@ -71,6 +75,44 @@ module ADN ./adn/tools/run nodos buscar dasuten AYUDA end + # ─── Info ─────────────────────────────────────────────────────────── + + def info_nodo + nombre = @args.shift + unless nombre + puts "#{Color::RED}✗ Se requiere nombre del nodo#{Color::RESET}" + puts " Uso: ./adn/tools/run nodos info " + return + end + + metadata = ADN::NodosInfo.extraer_metadata(nombre) + unless metadata + puts "#{Color::RED}✗ Nodo '#{nombre}' no encontrado en nodos/#{Color::RESET}" + return + end + + puts "#{Color::CYAN}🖥️ Ficha: #{nombre}#{Color::RESET}" + puts "#{Color::DIM}#{'─' * 50}#{Color::RESET}" + + campos = { + 'IP' => metadata[:ip], + 'Puerto SSH' => metadata[:puerto_ssh], + 'Usuario' => metadata[:usuario], + 'Auth' => metadata[:auth_type], + 'Bóveda' => metadata[:clave_boveda], + 'Host' => metadata[:host], + 'SO' => metadata[:so], + 'VMID' => metadata[:vmid] + } + + campos.each do |label, valor| + valor_str = valor ? valor.to_s : "#{Color::DIM}(no detectado)#{Color::RESET}" + printf " #{Color::BOLD}%-14s#{Color::RESET} %s\n", label, valor_str + end + + puts "#{Color::DIM}#{'─' * 50}#{Color::RESET}" + puts "#{Color::DIM} Fuente: nodos/#{nombre}.md#{Color::RESET}" + end # ─── Agrupar ──────────────────────────────────────────────────────── diff --git a/docs/proy/p2604_mejoras_ADN/P2604_mejoras_ADN.md b/docs/proy/p2604_mejoras_ADN/P2604_mejoras_ADN.md index 0c8fc5a2..13e7838c 100644 --- a/docs/proy/p2604_mejoras_ADN/P2604_mejoras_ADN.md +++ b/docs/proy/p2604_mejoras_ADN/P2604_mejoras_ADN.md @@ -156,6 +156,7 @@ Mejoras atómicas, incrementales y reutilizables. Una herramienta por vez. | S11 | Crear CLI `ssh` — ejecución remota reutilizable via `candados` + `EjecutorRemoto` | Herramienta | ✅ | | S12 | Refactorizar `ssh.rb` — leer datos de fichas via `NodosInfo`, eliminar hash hardcodeado | Refactor | ✅ | | S13 | Consolidar `core/` — mover lógica de dominio a submódulos CLI (`nodos_info`→`nodos/`, etc.) | Arquitectura | ✅ | +| S14 | Agregar subcomando `nodos info ` — exponer metadata de fichas como herramienta CLI | Herramienta | ✅ | ---