You can set a report as baseline by calling #baseline!
Paired-With: Matt Robinson <[email protected]>
Signed-off-by: Jesse Wolfe <[email protected]>
---
Local-branch: ticket/next/5174-part2
app/models/node.rb | 1 +
app/models/report.rb | 9 +++++
...101229023023_add_baseline_report_id_to_nodes.rb | 9 +++++
db/schema.rb | 5 ++-
spec/models/report_spec.rb | 32 ++++++++++++++++++++
5 files changed, 54 insertions(+), 2 deletions(-)
create mode 100644 db/migrate/20101229023023_add_baseline_report_id_to_nodes.rb
diff --git a/app/models/node.rb b/app/models/node.rb
index ba48086..a270950 100644
--- a/app/models/node.rb
+++ b/app/models/node.rb
@@ -15,6 +15,7 @@ class Node < ActiveRecord::Base
has_many :reports, :dependent => :destroy
belongs_to :last_report, :class_name => 'Report'
+ belongs_to :baseline_report, :class_name => 'Report'
named_scope :with_last_report, :include => :last_report
named_scope :by_report_date, :order => 'reported_at DESC'
diff --git a/app/models/report.rb b/app/models/report.rb
index da20b3e..98f4817 100644
--- a/app/models/report.rb
+++ b/app/models/report.rb
@@ -117,6 +117,15 @@ class Report < ActiveRecord::Base
end
end
+ def baseline?
+ self.node.baseline_report == self
+ end
+
+ def baseline!
+ self.node.baseline_report = self
+ self.node.save!
+ end
+
private
def resources_to_hash(resources)
diff --git a/db/migrate/20101229023023_add_baseline_report_id_to_nodes.rb
b/db/migrate/20101229023023_add_baseline_report_id_to_nodes.rb
new file mode 100644
index 0000000..da8efb8
--- /dev/null
+++ b/db/migrate/20101229023023_add_baseline_report_id_to_nodes.rb
@@ -0,0 +1,9 @@
+class AddBaselineReportIdToNodes < ActiveRecord::Migration
+ def self.up
+ add_column :nodes, :baseline_report_id, :integer
+ end
+
+ def self.down
+ remove_column :nodes, :baseline_report_id
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 34b87d8..bd3c2fe 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -9,7 +9,7 @@
#
# It's strongly recommended to check this file into your version control
system.
-ActiveRecord::Schema.define(:version => 20101206225510) do
+ActiveRecord::Schema.define(:version => 20101229023023) do
create_table "assignments", :force => true do |t|
t.integer "node_id"
@@ -76,7 +76,8 @@ ActiveRecord::Schema.define(:version => 20101206225510) do
t.datetime "reported_at"
t.integer "last_report_id"
t.string "status"
- t.boolean "hidden", :default => false
+ t.boolean "hidden", :default => false
+ t.integer "baseline_report_id"
end
create_table "old_reports", :force => true do |t|
diff --git a/spec/models/report_spec.rb b/spec/models/report_spec.rb
index 918510a..ffd3177 100644
--- a/spec/models/report_spec.rb
+++ b/spec/models/report_spec.rb
@@ -239,6 +239,37 @@ HEREDOC
}
}
end
+
+ describe "baseline!" do
+ before do
+ @report = generate_report(Time.now, "file", "foo")
+ @report2 = generate_report(1.week.ago, "absent", nil)
+ end
+
+ it "should set baseline?" do
+ @report.baseline!
+
+ @report.reload
+ @report.should be_baseline
+ end
+
+ it "should unset other reports' baseline?" do
+ @report.should_not be_baseline
+ @report2.should_not be_baseline
+
+ @report.baseline!
+ @report.reload
+ @report.should be_baseline
+ @report2.should_not be_baseline
+
+ @report2.baseline!
+ @report2.should be_baseline
+
+ @report.reload
+ @report.should_not be_baseline
+ end
+ end
+
end
describe "#create_from_yaml" do
@@ -358,6 +389,7 @@ HEREDOC
end
end
+
describe "When destroying" do
it "should destroy all dependent model objects" do
@node = Node.generate(:name => 'puppet.puppetlabs.vm')
--
1.7.0.4
--
You received this message because you are subscribed to the Google Groups
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-dev?hl=en.