[P2604-S14] Subcomando 'nodos info' — metadata de fichas como CLI

Nuevo subcomando: ./adn/tools/run nodos info <nodo>
- Muestra IP, puerto SSH, usuario, auth, bóveda, host, SO, VMID
- Lecturas directas de fichas nodos/*.md via NodosInfo
- Campos no detectados se marcan como (no detectado)
- Completa la arquitectura: info.rb es submódulo + herramienta CLI

Ejemplo: nodos info pcv-dasu0 → IP, puerto 7022, DASUTEN\admindasu...
- 15 tests, 0 failures
- Evento 1079 (17:25→17:28)
This commit is contained in:
Ricardo Monla
2026-03-15 17:26:44 -03:00
parent a5f71df15d
commit 4ff2dc5e8e
2 changed files with 43 additions and 0 deletions
+42
View File
@@ -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 <acción> [opciones]
#{Color::YELLOW}Acciones:#{Color::RESET}
info <nodo> 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 <término> 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 <nodo>"
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 ────────────────────────────────────────────────────────