Module: AbrtReportsHelper

Included in:
AbrtReportsController, Api::V2::AbrtReportsController
Defined in:
app/helpers/abrt_reports_helper.rb

Instance Method Summary collapse

Instance Method Details

#count_abrt_reports(abrt_reports) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/helpers/abrt_reports_helper.rb', line 10

def count_abrt_reports abrt_reports
  range_days = 14
  data = []
  now = Time.now.utc
  start = now - range_days.days
  by_day = abrt_reports.where(:reported_at => start..now).
                        group('DATE(reported_at)').
                        sum(:count)

  range_days.downto(1) do |days_back|
    date = (now - (days_back-1).days).strftime('%Y-%m-%d')
    crashes = by_day[date] or 0
    data << [days_back, crashes]
  end
  data
end

#format_reason(reason) ⇒ Object



60
61
62
63
64
65
66
# File 'app/helpers/abrt_reports_helper.rb', line 60

def format_reason reason
  if reason.nil? or reason.empty?
    _("Unknown")
  else
    reason
  end
end

#render_abrt_graph(abrt_reports, options = {}) ⇒ Object



27
28
29
30
# File 'app/helpers/abrt_reports_helper.rb', line 27

def render_abrt_graph abrt_reports, options = {}
  data = count_abrt_reports abrt_reports
  flot_bar_chart 'abrt_graph', _('Days Ago'), _('Number of crashes'), data, options
end

#send_to_abrt_server(abrt_report) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'app/helpers/abrt_reports_helper.rb', line 32

def send_to_abrt_server abrt_report
  request_params = {
    :timeout => 60,
    :open_timeout => 10,
    :verify_ssl => Setting[:abrt_server_verify_ssl] ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE
  }

  if Setting[:abrt_server_ssl_ca_file] && !Setting[:abrt_server_ssl_ca_file].empty?
    request_params[:ssl_ca_file] = Setting[:abrt_server_ssl_ca_file]
  end

  if Setting[:abrt_server_ssl_certificate] && !Setting[:abrt_server_ssl_certificate].empty? \
     && Setting[:abrt_server_ssl_priv_key] && !Setting[:abrt_server_ssl_priv_key].empty?
    request_params[:ssl_client_cert] = OpenSSL::X509::Certificate.new(File.read(Setting[:abrt_server_ssl_certificate]))
    request_params[:ssl_client_key]  = OpenSSL::PKey::RSA.new(File.read(Setting[:abrt_server_ssl_priv_key]))
  end

  resource = RestClient::Resource.new(Setting[:abrt_server_url], request_params)
  response = resource['reports/new/'].post({:file => abrt_report.json, :multipart => true}, :content_type => :json, :accept => :json)

  if response.code != 202
    logger.error "Failed to forward bug report: #{response.code}: #{response.to_str}"
    raise ::Foreman::Exception.new(N_("Failed to forward bug report: %s: %s", response.code, response.to_str))
  end

  JSON.parse(response.body)
end

#simple_format_if_multiline(str) ⇒ Object



2
3
4
5
6
7
8
# File 'app/helpers/abrt_reports_helper.rb', line 2

def simple_format_if_multiline str
  if str.include? "\n"
    simple_format str
  else
    str
  end
end