fix(dron): corregir ámbito/nodo de registro en bitácora para pipeline DASUTEN
Bug 2 — proc_dasuten.rb: - Separa nodo operacional (srvv-fenix, srv-ns8, etc.) del nodo de bitácora - Registro siempre bajo nodo=dtic-BKPs / ámbito=dtic-DIIAA - Agrega constantes NODO_BITACORA y AMBITO_BITACORA Bug 3 — ejecutor.rb (detectar_nodo_id): - Ignoraba el parámetro 'nodo' y siempre usaba Socket.gethostname - Fix: usa el nombre pasado para lookup en DB - Fallback a hostname local solo si nodo es nil/empty o no existe en DB - Segundo fallback a hostname si el nodo pasado tampoco existe en DB DB: creado nodo 'dtic-BKPs' (ID:49, tipo:servicio, ámbito:dtic-DIIAA) Refs: A04.P006 — Pipeline DASUTEN / A03 BKPs
This commit is contained in:
@@ -16,6 +16,11 @@ module ADN
|
|||||||
'cli', 'drones'
|
'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 = {
|
SCRIPTS = {
|
||||||
'dasuten_export_full' => 'dasuten_exportar_srvv-fenix.rb',
|
'dasuten_export_full' => 'dasuten_exportar_srvv-fenix.rb',
|
||||||
'dasuten_export_dif' => 'dasuten_exportar_diferencial_srvv-fenix.rb',
|
'dasuten_export_dif' => 'dasuten_exportar_diferencial_srvv-fenix.rb',
|
||||||
@@ -48,12 +53,13 @@ module ADN
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
nodo = tarea[:nodo] || detectar_nodo(tarea[:id])
|
|
||||||
nota = tarea[:texto] || "DASUTEN: #{tarea[:id]}"
|
nota = tarea[:texto] || "DASUTEN: #{tarea[:id]}"
|
||||||
ambito = tarea[:ambito] || 'dtic-DASUTEN'
|
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
|
# 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.info("Ejecutando dron: #{nota}")
|
||||||
@logger.debug("Comando: #{cmd}")
|
@logger.debug("Comando: #{cmd}")
|
||||||
|
|||||||
@@ -295,13 +295,23 @@ module Dron
|
|||||||
return nodo if nodo.is_a?(Integer)
|
return nodo if nodo.is_a?(Integer)
|
||||||
|
|
||||||
require 'socket'
|
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
|
resultado = nil
|
||||||
BitacorasDB::BitacoraDB.with_connection do |db|
|
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
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user