From 6651aa4fc84506b9d20076be28741516214c5d5d Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Tue, 19 Jan 2010 15:42:59 -0800 Subject: Adding first version of Resource::Status class This is the class that will be returned in reports, and they'll contain the events being created. Signed-off-by: Luke Kanies --- lib/puppet/resource/status.rb | 51 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 lib/puppet/resource/status.rb (limited to 'lib') diff --git a/lib/puppet/resource/status.rb b/lib/puppet/resource/status.rb new file mode 100644 index 000000000..0ca295d4d --- /dev/null +++ b/lib/puppet/resource/status.rb @@ -0,0 +1,51 @@ +class Puppet::Resource::Status + include Puppet::Util::Tagging + include Puppet::Util::Logging + + ATTRIBUTES = [:resource, :node, :version, :file, :line, :current_values, :skipped_reason, :status, :evaluation_time] + attr_accessor *ATTRIBUTES + + STATES = [:skipped, :failed, :changed, :out_of_sync, :scheduled] + attr_accessor *STATES + + attr_reader :source_description, :default_log_level, :time, :resource + + # Provide a boolean method for each of the states. + STATES.each do |attr| + define_method("#{attr}?") do + !! send(attr) + end + end + + def <<(event) + add_event(event) + self + end + + def add_event(event) + @events << event + end + + def events + @events + end + + def initialize(resource) + @source_description = resource.path + @resource = resource.to_s + + [:file, :line, :version].each do |attr| + send(attr.to_s + "=", resource.send(attr)) + end + + tag(*resource.tags) + @time = Time.now + @events = [] + end + + private + + def log_source + source_description + end +end -- cgit