trabajo-afectivo/lib/import/otrs/async.rb

65 lines
1.5 KiB
Ruby
Raw Permalink Normal View History

2022-01-01 13:38:12 +00:00
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
module Import
module OTRS
module Async
# rubocop:disable Style/ModuleFunction
extend self
def start_bg
Setting.reload
Import::OTRS::Requester.connection_test
# start thread to observe current state
status_update_thread = Thread.new do
loop do
result = {
data: current_state,
result: 'in_progress',
}
Cache.write('import:state', result, expires_in: 10.minutes)
sleep 8
end
end
sleep 2
# start import data
begin
Import::OTRS.start
rescue => e
status_update_thread.exit
status_update_thread.join
Rails.logger.error e
result = {
message: e.message,
result: 'error',
}
Cache.write('import:state', result, expires_in: 10.hours)
return false
end
sleep 16 # wait until new finished import state is on client
status_update_thread.exit
status_update_thread.join
result = {
result: 'import_done',
}
Cache.write('import:state', result, expires_in: 10.hours)
Setting.set('system_init_done', true)
Setting.set('import_mode', false)
end
def status_bg
state = Cache.read('import:state')
return state if state
{
message: 'not running',
}
end
end
end
end