Module: ForemanKernelCare::ForemanTasks

Defined in:
app/controllers/concerns/foreman_kernel_care/foreman_tasks.rb

Instance Method Summary collapse

Instance Method Details

#callbackObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/controllers/concerns/foreman_kernel_care/foreman_tasks.rb', line 3

def callback
  callbacks = params.key?(:callback) ? Array(params) : params[:callbacks]
  ids = callbacks.map { |payload| payload[:callback][:task_id] }
  foreman_tasks = ::ForemanTasks::Task.where(:id => ids)
  callbacks.each do |payload|
    # We need to call .to_unsafe_h to unwrap the hash from ActionController::Parameters
    callback = payload[:callback]
    foreman_task = foreman_tasks.find { |task| task.id == callback[:task_id] }
    next unless foreman_task.action.include?('Get patched kernel version')
    complete_output = ''
    result = payload[:data].to_unsafe_h['result']
    result.each { |x| complete_output += x['output'] }
    kernel, kcare = complete_output.split(/\n/)
    kernel = kernel.gsub('Installed kernel version: ', '')
    kcare = kcare.gsub('Patched kernel version: ', '')
    version, release = kcare.strip.split('-')
    next if version.empty? || release.empty?
    job_invocation = ::JobInvocation.where(:task_id => foreman_task.parent_task_id).first
    job_invocation.targeting.hosts.each { |host| host.update_kernel_version(version, release, kernel) }
  end

  super
end