[bkps] Corregido namespace del procesador Dasuten (ADN::BKPs::Procesador)
This commit is contained in:
@@ -7,86 +7,88 @@
|
|||||||
# Integra pipeline de backups en bkps.rb
|
# Integra pipeline de backups en bkps.rb
|
||||||
# ==========================================================
|
# ==========================================================
|
||||||
|
|
||||||
module BKPs
|
module ADN
|
||||||
module Procesador
|
module BKPs
|
||||||
class Dasuten
|
module Procesador
|
||||||
DRONES_DIR = File.join(
|
class Dasuten
|
||||||
File.dirname(File.dirname(File.expand_path(__FILE__))),
|
DRONES_DIR = File.join(
|
||||||
'cli', 'drones'
|
File.dirname(File.dirname(File.expand_path(__FILE__))),
|
||||||
)
|
'cli', 'drones'
|
||||||
|
|
||||||
SCRIPTS = {
|
|
||||||
'dasuten_export_full' => 'dasuten_exportar_srvv-fenix.rb',
|
|
||||||
'dasuten_export_dif' => 'dasuten_exportar_diferencial_srvv-fenix.rb',
|
|
||||||
'dasuten_transferir' => 'dasuten_transferir_srvv-fenix-srv-ns8.rb',
|
|
||||||
'dasuten_upload' => 'dasuten_upload_srv-ns8-drive.rb',
|
|
||||||
'dasuten_download' => 'dasuten_download_drive-dasu-sql4.rb',
|
|
||||||
'dasuten_restaurar_full' => 'dasuten_restaurar_dasu-sql4.rb',
|
|
||||||
'dasuten_restaurar_dif' => 'dasuten_restaurar_diferencial_dasu-sql4.rb',
|
|
||||||
'dasuten_verificar' => 'dasuten_verificar-integridad_dasu-sql4.rb',
|
|
||||||
}.freeze
|
|
||||||
|
|
||||||
def initialize(logger)
|
|
||||||
@logger = logger
|
|
||||||
@dron_runner = File.join(
|
|
||||||
File.dirname(File.dirname(File.dirname(File.dirname(DRONES_DIR)))),
|
|
||||||
'tools', 'run'
|
|
||||||
)
|
)
|
||||||
end
|
|
||||||
|
|
||||||
def ejecutar(tarea)
|
SCRIPTS = {
|
||||||
script_name = SCRIPTS[tarea[:id]]
|
'dasuten_export_full' => 'dasuten_exportar_srvv-fenix.rb',
|
||||||
unless script_name
|
'dasuten_export_dif' => 'dasuten_exportar_diferencial_srvv-fenix.rb',
|
||||||
@logger.error("Tarea DASUTEN desconocida: #{tarea[:id]}")
|
'dasuten_transferir' => 'dasuten_transferir_srvv-fenix-srv-ns8.rb',
|
||||||
return false
|
'dasuten_upload' => 'dasuten_upload_srv-ns8-drive.rb',
|
||||||
|
'dasuten_download' => 'dasuten_download_drive-dasu-sql4.rb',
|
||||||
|
'dasuten_restaurar_full' => 'dasuten_restaurar_dasu-sql4.rb',
|
||||||
|
'dasuten_restaurar_dif' => 'dasuten_restaurar_diferencial_dasu-sql4.rb',
|
||||||
|
'dasuten_verificar' => 'dasuten_verificar-integridad_dasu-sql4.rb',
|
||||||
|
}.freeze
|
||||||
|
|
||||||
|
def initialize(logger)
|
||||||
|
@logger = logger
|
||||||
|
@dron_runner = File.join(
|
||||||
|
File.dirname(File.dirname(File.dirname(File.dirname(DRONES_DIR)))),
|
||||||
|
'tools', 'run'
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
script_path = File.join(DRONES_DIR, script_name)
|
def ejecutar(tarea)
|
||||||
unless File.exist?(script_path)
|
script_name = SCRIPTS[tarea[:id]]
|
||||||
@logger.error("Script no encontrado: #{script_path}")
|
unless script_name
|
||||||
return false
|
@logger.error("Tarea DASUTEN desconocida: #{tarea[:id]}")
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
script_path = File.join(DRONES_DIR, script_name)
|
||||||
|
unless File.exist?(script_path)
|
||||||
|
@logger.error("Script no encontrado: #{script_path}")
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
nodo = tarea[:nodo] || detectar_nodo(tarea[:id])
|
||||||
|
nota = tarea[:texto] || "DASUTEN: #{tarea[:id]}"
|
||||||
|
|
||||||
|
# Lanzar dron con bitácora automática
|
||||||
|
cmd = "#{@dron_runner} dron lanzar --nota #{Shellwords.escape(nota)} --nodo #{Shellwords.escape(nodo)} -- ruby #{script_path}"
|
||||||
|
|
||||||
|
@logger.info("Ejecutando dron: #{nota}")
|
||||||
|
@logger.debug("Comando: #{cmd}")
|
||||||
|
|
||||||
|
exito = system(cmd)
|
||||||
|
codigo = $?.exitstatus
|
||||||
|
|
||||||
|
if exito
|
||||||
|
@logger.info("✅ Dron completado (código: #{codigo})")
|
||||||
|
true
|
||||||
|
else
|
||||||
|
@logger.error("❌ Dron fallido (código: #{codigo})")
|
||||||
|
false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
nodo = tarea[:nodo] || detectar_nodo(tarea[:id])
|
# Para modo atómico (no aplica en DASUTEN - todos son pipelines)
|
||||||
nota = tarea[:texto] || "DASUTEN: #{tarea[:id]}"
|
def ejecutar_uno(tarea, archivo)
|
||||||
|
@logger.warn("Modo atómico no soportado para DASUTEN")
|
||||||
# Lanzar dron con bitácora automática
|
ejecutar(tarea)
|
||||||
cmd = "#{@dron_runner} dron lanzar --nota #{Shellwords.escape(nota)} --nodo #{Shellwords.escape(nodo)} -- ruby #{script_path}"
|
|
||||||
|
|
||||||
@logger.info("Ejecutando dron: #{nota}")
|
|
||||||
@logger.debug("Comando: #{cmd}")
|
|
||||||
|
|
||||||
exito = system(cmd)
|
|
||||||
codigo = $?.exitstatus
|
|
||||||
|
|
||||||
if exito
|
|
||||||
@logger.info("✅ Dron completado (código: #{codigo})")
|
|
||||||
true
|
|
||||||
else
|
|
||||||
@logger.error("❌ Dron fallido (código: #{codigo})")
|
|
||||||
false
|
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
# Para modo atómico (no aplica en DASUTEN - todos son pipelines)
|
# Listar archivos pendientes (no aplica - pipeline fijo)
|
||||||
def ejecutar_uno(tarea, archivo)
|
def listar(tarea)
|
||||||
@logger.warn("Modo atómico no soportado para DASUTEN")
|
[]
|
||||||
ejecutar(tarea)
|
end
|
||||||
end
|
|
||||||
|
|
||||||
# Listar archivos pendientes (no aplica - pipeline fijo)
|
private
|
||||||
def listar(tarea)
|
|
||||||
[]
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
def detectar_nodo(tarea_id)
|
||||||
|
case tarea_id
|
||||||
def detectar_nodo(tarea_id)
|
when /export/ then 'srvv-fenix'
|
||||||
case tarea_id
|
when /transferir/, /upload/ then 'srv-ns8'
|
||||||
when /export/ then 'srvv-fenix'
|
when /download/, /restaurar/, /verificar/ then 'dasu-sql4'
|
||||||
when /transferir/, /upload/ then 'srv-ns8'
|
else 'srv-dasu'
|
||||||
when /download/, /restaurar/, /verificar/ then 'dasu-sql4'
|
end
|
||||||
else 'srv-dasu'
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user