class Puppet::Resource::Status

Constants

STATES
YAML_ATTRIBUTES

Attributes

change_count[R]
containment_path[R]
current_values[RW]
default_log_level[R]
evaluation_time[RW]
file[RW]
line[RW]
node[RW]
out_of_sync_count[R]
resource[RW]
resource_type[R]
source_description[R]
status[RW]
time[R]
title[R]

Public Instance Methods

<<(event) click to toggle source
# File lib/puppet/resource/status.rb, line 45
def <<(event)
  add_event(event)
  self
end
add_event(event) click to toggle source
# File lib/puppet/resource/status.rb, line 50
def add_event(event)
  @events << event
  if event.status == 'failure'
    self.failed = true
  elsif event.status == 'success'
    @change_count += 1
    @changed = true
  end
  if event.status != 'audit'
    @out_of_sync_count += 1
    @out_of_sync = true
  end
end
events() click to toggle source
# File lib/puppet/resource/status.rb, line 64
def events
  @events
end
failed_because(detail) click to toggle source
# File lib/puppet/resource/status.rb, line 68
def failed_because(detail)
  @real_resource.log_exception(detail, "Could not evaluate: #{detail}")
  failed = true
  # There's a contract (implicit unfortunately) that a status of failed
  # will always be accompanied by an event with some explanatory power.  This
  # is useful for reporting/diagnostics/etc.  So synthesize an event here
  # with the exception detail as the message.
  add_event(@real_resource.event(:name => :resource_error, :status => "failure", :message => detail.to_s))
end
initialize_from_hash(data) click to toggle source
# File lib/puppet/resource/status.rb, line 100
def initialize_from_hash(data)
  @resource_type = data['resource_type']
  @title = data['title']
  @resource = data['resource']
  @containment_path = data['containment_path']
  @file = data['file']
  @line = data['line']
  @evaluation_time = data['evaluation_time']
  @change_count = data['change_count']
  @out_of_sync_count = data['out_of_sync_count']
  @tags = Puppet::Util::TagSet.new(data['tags'])
  @time = data['time']
  @time = Time.parse(@time) if @time.is_a? String
  @out_of_sync = data['out_of_sync']
  @changed = data['changed']
  @skipped = data['skipped']
  @failed = data['failed']

  @events = data['events'].map do |event|
    Puppet::Transaction::Event.from_data_hash(event)
  end
end
to_data_hash() click to toggle source
# File lib/puppet/resource/status.rb, line 123
def to_data_hash
  {
    'title' => @title,
    'file' => @file,
    'line' => @line,
    'resource' => @resource,
    'resource_type' => @resource_type,
    'containment_path' => @containment_path,
    'evaluation_time' => @evaluation_time,
    'tags' => @tags,
    'time' => @time.iso8601(9),
    'failed' => @failed,
    'changed' => @changed,
    'out_of_sync' => @out_of_sync,
    'skipped' => @skipped,
    'change_count' => @change_count,
    'out_of_sync_count' => @out_of_sync_count,
    'events' => @events,
  }
end
to_yaml_properties() click to toggle source
# File lib/puppet/resource/status.rb, line 144
def to_yaml_properties
  YAML_ATTRIBUTES & super
end

Public Class Methods

from_data_hash(data) click to toggle source
# File lib/puppet/resource/status.rb, line 27
def self.from_data_hash(data)
  obj = self.allocate
  obj.initialize_from_hash(data)
  obj
end
from_pson(data) click to toggle source
# File lib/puppet/resource/status.rb, line 33
def self.from_pson(data)
  Puppet.deprecation_warning("from_pson is being removed in favour of from_data_hash.")
  self.from_data_hash(data)
end
new(resource) click to toggle source
# File lib/puppet/resource/status.rb, line 78
def initialize(resource)
  @real_resource = resource
  @source_description = resource.path
  @containment_path = resource.pathbuilder
  @resource = resource.to_s
  @change_count = 0
  @out_of_sync_count = 0
  @changed = false
  @out_of_sync = false
  @skipped = false
  @failed = false

  @file = resource.file
  @line = resource.line

  tag(*resource.tags)
  @time = Time.now
  @events = []
  @resource_type = resource.type.to_s.capitalize
  @title = resource.title
end