Paired-with: Jesse Wolfe <[email protected]>
Signed-off-by: Paul Berry <[email protected]>
---
Local-branch: ticket/next/5743
app/models/resource_event.rb | 1 +
...3543_add_historical_value_to_resource_events.rb | 9 ++++
...0110105233640_add_audited_to_resource_events.rb | 9 ++++
db/schema.rb | 6 ++-
lib/report_transformer.rb | 9 ++++
spec/lib/report_transformer_spec.rb | 40 ++++++++++++++++++++
6 files changed, 72 insertions(+), 2 deletions(-)
create mode 100644
db/migrate/20110105233543_add_historical_value_to_resource_events.rb
create mode 100644 db/migrate/20110105233640_add_audited_to_resource_events.rb
diff --git a/app/models/resource_event.rb b/app/models/resource_event.rb
index 24428ac..c29c036 100644
--- a/app/models/resource_event.rb
+++ b/app/models/resource_event.rb
@@ -4,4 +4,5 @@ class ResourceEvent < ActiveRecord::Base
serialize :tags, Array
serialize :desired_value
serialize :previous_value
+ serialize :historical_value
end
diff --git
a/db/migrate/20110105233543_add_historical_value_to_resource_events.rb
b/db/migrate/20110105233543_add_historical_value_to_resource_events.rb
new file mode 100644
index 0000000..2a3f9ca
--- /dev/null
+++ b/db/migrate/20110105233543_add_historical_value_to_resource_events.rb
@@ -0,0 +1,9 @@
+class AddHistoricalValueToResourceEvents < ActiveRecord::Migration
+ def self.up
+ add_column :resource_events, :historical_value, :string
+ end
+
+ def self.down
+ remove_column :resource_events, :historical_value
+ end
+end
diff --git a/db/migrate/20110105233640_add_audited_to_resource_events.rb
b/db/migrate/20110105233640_add_audited_to_resource_events.rb
new file mode 100644
index 0000000..74bfc34
--- /dev/null
+++ b/db/migrate/20110105233640_add_audited_to_resource_events.rb
@@ -0,0 +1,9 @@
+class AddAuditedToResourceEvents < ActiveRecord::Migration
+ def self.up
+ add_column :resource_events, :audited, :boolean
+ end
+
+ def self.down
+ remove_column :resource_events, :audited
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index c46f73a..413e279 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 => 20110105231833) do
+ActiveRecord::Schema.define(:version => 20110105233640) do
create_table "assignments", :force => true do |t|
t.integer "node_id"
@@ -82,7 +82,7 @@ ActiveRecord::Schema.define(:version => 20110105231833) do
create_table "old_reports", :force => true do |t|
t.integer "node_id"
- t.text "report", :limit => 2147483647
+ t.text "report", :limit => 16777215
t.datetime "created_at"
t.datetime "updated_at"
t.string "host"
@@ -135,6 +135,8 @@ ActiveRecord::Schema.define(:version => 20110105231833) do
t.string "status"
t.string "tags"
t.datetime "time"
+ t.string "historical_value"
+ t.boolean "audited"
end
add_index "resource_events", ["resource_status_id"], :name =>
"index_resource_events_on_resource_status_id"
diff --git a/lib/report_transformer.rb b/lib/report_transformer.rb
index 6506f6b..c7ecc13 100644
--- a/lib/report_transformer.rb
+++ b/lib/report_transformer.rb
@@ -57,6 +57,15 @@ class ReportTransformer::OneToTwo <
ReportTransformer::ReportTransformation
key =~ /^(.+?)\[(.+)\]$/
resource_status["resource_type"], resource_status["title"] = $1, $2
resource_status["out_of_sync_count"] = resource_status["change_count"]
+ resource_status["events"].each do |event|
+ event["audited"] = event["status"] == "audit"
+ if event["audited"]
+ event["historical_value"] = event["desired_value"]
+ event["desired_value"] = nil
+ else
+ event["historical_value"] = nil
+ end
+ end
resource_status.delete("version")
end
report["logs"].each do |log|
diff --git a/spec/lib/report_transformer_spec.rb
b/spec/lib/report_transformer_spec.rb
index 1f05fbc..b7643b4 100644
--- a/spec/lib/report_transformer_spec.rb
+++ b/spec/lib/report_transformer_spec.rb
@@ -161,5 +161,45 @@ describe ReportTransformer do
key.should ==
"#{resource_status['resource_type']}[#{resource_status['title']}]"
end
end
+
+ it "should interpret desired_value as historical_value and set
audited=true for audit events" do
+ desired_values = {}
+ @report["resource_statuses"].each do |key, resource_status|
+ resource_status["events"].each do |event|
+ event["status"] = 'audit'
+ desired_values[key] = event["desired_value"]
+ end
+ end
+ report = ReportTransformer::OneToTwo.apply(@report)
+ report["resource_statuses"].each do |key, resource_status|
+ resource_status["events"].each do |event|
+ event["audited"].should == true
+ event["historical_value"].should == desired_values[key]
+ event.keys.should include("desired_value")
+ event["desired_value"].should == nil
+ end
+ end
+ end
+
+ %w{success failure noop}.each do |status|
+ it "should leave desired_value alone and set audited=false for #{status}
events" do
+ desired_values = {}
+ @report["resource_statuses"].each do |key, resource_status|
+ resource_status["events"].each do |event|
+ event["status"] = status
+ desired_values[key] = event["desired_value"]
+ end
+ end
+ report = ReportTransformer::OneToTwo.apply(@report)
+ report["resource_statuses"].each do |key, resource_status|
+ resource_status["events"].each do |event|
+ event["audited"].should == false
+ event["desired_value"].should == desired_values[key]
+ event.keys.should include("historical_value")
+ event["historical_value"].should == nil
+ end
+ end
+ end
+ end
end
end
--
1.7.2
--
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.