Class: PuppetHerald::Models::Report

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/puppet-herald/models/report.rb

Overview

A model for Report

Class Method Summary collapse

Class Method Details

.create_from_yaml(yaml) ⇒ Report

Creates a report from given YAML report file

Parameters:

  • yaml (String)

    a puppet report YAML as string

Returns:



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/puppet-herald/models/report.rb', line 26

def create_from_yaml(yaml)
  parsed = parse_yaml yaml
  report = nil
  transaction do
    report = Report.new

    parse_properties parsed, report
    parse_logs parsed, report
    node = parse_node parsed, report

    report.save
    node.save
  end
  report
end

.purge_older_then(date) ⇒ Integer

Purges older reports then given date

Parameters:

  • date (DateTime)

    a date that will be border to

Returns:

  • (Integer)

    number of



46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/puppet-herald/models/report.rb', line 46

def purge_older_then(date)
  deleted = 0
  query = ['"reports"."time" < ?', date]
  return 0 if where(query).count == 0
  transaction do
    idss = joins(:log_entries).where(query).collect(&:id).uniq
    PuppetHerald::Models::LogEntry.where(['"report_id" IN (?)', idss]).delete_all unless idss.empty?
    where(['"id" IN (?)', idss]).delete_all unless idss.empty?
    PuppetHerald::Models::Node.delete_empty
    deleted = idss.length
  end
  deleted
end

.with_log_entries(id) ⇒ Report?

Gets a report with prefetched log entries

Parameters:

  • id (Integer)

    a in of report to get

Returns:

  • (Report, nil)

    fetched report or nil



19
20
21
# File 'lib/puppet-herald/models/report.rb', line 19

def with_log_entries(id)
  Report.joins(:log_entries).includes(:log_entries).find_by_id(id)
end