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.

Reply via email to