diff --git a/adn/tools/bkps/lib/proc_dasuten.rb b/adn/tools/bkps/lib/proc_dasuten.rb index 0b72d8ba..171f0d44 100644 --- a/adn/tools/bkps/lib/proc_dasuten.rb +++ b/adn/tools/bkps/lib/proc_dasuten.rb @@ -16,6 +16,11 @@ module ADN 'cli', 'drones' ) + # Nodo y ámbito de REGISTRO en bitácora (lógico, no operacional) + # El nodo operacional (srvv-fenix, srv-ns8, etc.) es interno al dron + NODO_BITACORA = 'dtic-BKPs'.freeze + AMBITO_BITACORA = 'dtic-DIIAA'.freeze + SCRIPTS = { 'dasuten_export_full' => 'dasuten_exportar_srvv-fenix.rb', 'dasuten_export_dif' => 'dasuten_exportar_diferencial_srvv-fenix.rb', @@ -48,12 +53,13 @@ module ADN return false end - nodo = tarea[:nodo] || detectar_nodo(tarea[:id]) - nota = tarea[:texto] || "DASUTEN: #{tarea[:id]}" - ambito = tarea[:ambito] || 'dtic-DASUTEN' + nota = tarea[:texto] || "DASUTEN: #{tarea[:id]}" + nodo_bitacora = NODO_BITACORA # Registro lógico en bitácora + ambito_bitacora = AMBITO_BITACORA # Ámbito de registro en bitácora # Lanzar dron con bitácora automática - cmd = "#{@dron_runner} dron lanzar --nota #{Shellwords.escape(nota)} --nodo #{Shellwords.escape(nodo)} --ambito #{Shellwords.escape(ambito)} -- ruby #{script_path}" + # --nodo y --ambito son para REGISTRO en bitácora, no el nodo operacional + cmd = "#{@dron_runner} dron lanzar --nota #{Shellwords.escape(nota)} --nodo #{Shellwords.escape(nodo_bitacora)} --ambito #{Shellwords.escape(ambito_bitacora)} -- ruby #{script_path}" @logger.info("Ejecutando dron: #{nota}") @logger.debug("Comando: #{cmd}") diff --git a/adn/tools/cli/dron/ejecutor.rb b/adn/tools/cli/dron/ejecutor.rb index 960cb4ac..fae4fd3f 100644 --- a/adn/tools/cli/dron/ejecutor.rb +++ b/adn/tools/cli/dron/ejecutor.rb @@ -295,13 +295,23 @@ module Dron return nodo if nodo.is_a?(Integer) require 'socket' - hostname = Socket.gethostname.downcase + + # Usar el nodo pasado como parámetro; fallback al hostname local si es nil/empty + nombre_buscar = nodo.to_s.strip.downcase + if nombre_buscar.empty? + nombre_buscar = Socket.gethostname.downcase + end resultado = nil BitacorasDB::BitacoraDB.with_connection do |db| - resultado = db.execute('SELECT id FROM nodos WHERE LOWER(nombre) = $1 LIMIT 1', [hostname]) + resultado = db.execute('SELECT id FROM nodos WHERE LOWER(nombre) = $1 LIMIT 1', [nombre_buscar]) if resultado.nil? || resultado.ntuples == 0 - resultado = db.execute('SELECT id FROM nodos WHERE LOWER(nombre) LIKE $1 LIMIT 1', ["#{hostname}%"]) + resultado = db.execute('SELECT id FROM nodos WHERE LOWER(nombre) LIKE $1 LIMIT 1', ["#{nombre_buscar}%"]) + end + # Último fallback: hostname local si el nodo pasado no existe en DB + if (resultado.nil? || resultado.ntuples == 0) && nombre_buscar != Socket.gethostname.downcase + hostname = Socket.gethostname.downcase + resultado = db.execute('SELECT id FROM nodos WHERE LOWER(nombre) = $1 LIMIT 1', [hostname]) end end