From 977595bd712bfa25c176abb3983bc81df665ea7b Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Sat, 7 Nov 2009 17:30:45 -0600 Subject: Refactoring the Change/Event/Property interface This gives all logging responsibility to the event, which can now produce logs identical to those produced directly by the property. At this point, the events are entirely supersets of the logs. --- lib/puppet/property.rb | 2 +- lib/puppet/transaction/change.rb | 9 ++++++--- lib/puppet/transaction/event.rb | 25 +++++++++++++++++++++++-- 3 files changed, 30 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/puppet/property.rb b/lib/puppet/property.rb index 9d50dcf6a..ad8ea623f 100644 --- a/lib/puppet/property.rb +++ b/lib/puppet/property.rb @@ -157,7 +157,7 @@ class Puppet::Property < Puppet::Parameter # Return a modified form of the resource event. def event - resource.event :name => event_name, :desired_value => should, :property => name + resource.event :name => event_name, :desired_value => should, :property => name, :source_description => path end attr_reader :shadow diff --git a/lib/puppet/transaction/change.rb b/lib/puppet/transaction/change.rb index 49569d6e3..f8e2a7a82 100644 --- a/lib/puppet/transaction/change.rb +++ b/lib/puppet/transaction/change.rb @@ -40,8 +40,9 @@ class Puppet::Transaction::Change property.sync result = event() - result.log = property.notice property.change_to_s(is, should) + result.message = property.change_to_s(is, should) result.status = "success" + result.send_log result rescue => detail puts detail.backtrace if Puppet[:trace] @@ -50,7 +51,8 @@ class Puppet::Transaction::Change is = property.is_to_s(is) should = property.should_to_s(should) - result.log = property.err "change from #{is} to #{should} failed: #{detail}" + result.message = "change from #{is} to #{should} failed: #{detail}" + result.send_log result end @@ -80,8 +82,9 @@ class Puppet::Transaction::Change def noop_event result = event - result.log = property.log "is #{property.is_to_s(is)}, should be #{property.should_to_s(should)} (noop)" + result.message = "is #{property.is_to_s(is)}, should be #{property.should_to_s(should)} (noop)" result.status = "noop" + result.send_log return result end end diff --git a/lib/puppet/transaction/event.rb b/lib/puppet/transaction/event.rb index abd5c8041..41e1f5130 100644 --- a/lib/puppet/transaction/event.rb +++ b/lib/puppet/transaction/event.rb @@ -1,11 +1,13 @@ require 'puppet/transaction' require 'puppet/util/tagging' +require 'puppet/util/logging' # A simple struct for storing what happens on the system. class Puppet::Transaction::Event include Puppet::Util::Tagging + include Puppet::Util::Logging - ATTRIBUTES = [:name, :resource, :property, :previous_value, :desired_value, :status, :log, :node, :version, :file, :line] + ATTRIBUTES = [:name, :resource, :property, :previous_value, :desired_value, :status, :message, :node, :version, :file, :line, :source_description] attr_accessor *ATTRIBUTES attr_writer :tags attr_accessor :time @@ -19,12 +21,31 @@ class Puppet::Transaction::Event @time = Time.now end + def property=(prop) + @property = prop.to_s + end + + def resource=(res) + @resource = res.to_s + end + + def send_log + super(status == "failure" ? :err : :notice, message) + end + def status=(value) raise ArgumentError, "Event status can only be #{EVENT_STATUSES.join(', ')}" unless EVENT_STATUSES.include?(value) @status = value end def to_s - log + message + end + + private + + # Used by the Logging module + def log_source + source_description || property || resource end end -- cgit