Revision c30fd6f2
Added by Lukas Zapletal almost 6 years ago
app/services/report_importer.rb | ||
---|---|---|
class ReportImporter
|
||
include Foreman::TelemetryHelper
|
||
|
||
delegate :logger, :to => :Rails
|
||
attr_reader :report, :report_scanners
|
||
|
||
... | ... | |
end
|
||
|
||
def import
|
||
start_time = Time.now
|
||
logger.debug { "Processing report: #{raw.inspect}" }
|
||
create_report_and_logs
|
||
telemetry = {}
|
||
telemetry_duration_histogram(:report_importer_create, :ms, {type: self.class.name}, telemetry) do
|
||
create_report_and_logs
|
||
end
|
||
if report.persisted?
|
||
imported_time = Time.now
|
||
host.refresh_statuses(statuses_for_refresh)
|
||
refreshed_time = Time.now
|
||
logger.info("Imported report for #{name} in #{(imported_time - start_time).round(2)} seconds, status refreshed in #{(refreshed_time - imported_time).round(2)} seconds")
|
||
telemetry_duration_histogram(:report_importer_refresh, :ms, {type: self.class.name}, telemetry) do
|
||
host.refresh_statuses(statuses_for_refresh)
|
||
end
|
||
create = telemetry[:report_importer_create].try(:round, 1)
|
||
refresh = telemetry[:report_importer_refresh].try(:round, 1)
|
||
logger.info("Imported report for #{name} in #{create} ms, status refreshed in #{refresh} ms")
|
||
end
|
||
end
|
||
|
||
... | ... | |
report_scanners.each do |scanner|
|
||
break if scanner.scan(report, logs)
|
||
end
|
||
logger.debug "Changes after scanning: #{report.changes.inspect}"
|
||
logger.debug { "Changes after scanning: #{report.changes.inspect}" }
|
||
end
|
||
|
||
private
|
||
... | ... | |
users.select { |user| Host.authorized_as(user, :view_hosts).find(host.id).present? }
|
||
owners.concat users
|
||
if owners.present?
|
||
logger.debug "sending alert to #{owners.map(&:login).join(',')}"
|
||
logger.debug { "sending alert to #{owners.map(&:login).join(',')}" }
|
||
MailNotification[mail_error_state].deliver(report, :users => owners.uniq)
|
||
else
|
||
logger.debug "no owner or recipients for alert on #{name}"
|
||
logger.debug { "no owner or recipients for alert on #{name}" }
|
||
end
|
||
end
|
||
end
|
Also available in: Unified diff
Fixes #23808 - monotonic timer to measure durations