Project

General

Profile

Download (1.22 KB) Statistics
| Branch: | Tag: | Revision:
class ConvertReports < ActiveRecord::Migration
def self.up
say "About to convert all of the #{Report.count} reports log field into a more DB optimized way... this might take a while....."

Report.find_in_batches do |reports|
reports.each do |report|
case report.log.class.to_s
when "Puppet::Transaction::Report"
log = report.log
when "String"
log = YAML.load(report.log)
else
# this report might have been processed already, skipping
next
end

# Is this a pre 2.6.x report format?
pre26 = !report.instance_variables.include?("@resource_statuses")

# Recalcuate the status field if this report is from a 2.6.x puppet client
report.status = Report.calc_status(Report.metrics_to_hash(log)) unless pre26
report.metrics = Report.m2h(log.metrics).with_indifferent_access

report.import_log_messages(log)
report.log = "" # not really needed, but this way the db can reuse some space instead of claim new one.

report.save
end
end
remove_column :reports, :log

end

def self.down
add_column :reports, :log, :text
say "cant recreate the data, import it again"
end
end
(52-52/83)