diff options
| author | Nick Lewis <nick@puppetlabs.com> | 2011-01-13 16:03:41 -0800 |
|---|---|---|
| committer | Nick Lewis <nick@puppetlabs.com> | 2011-01-13 16:03:41 -0800 |
| commit | 17843d5e86a8841728a77c77d5f2ea4661c0f417 (patch) | |
| tree | d8a188a48e180f8179a97c29d6da6c9f28926031 /lib/puppet | |
| parent | 8c60cebababafbacf031a4ad842a615e82910cf0 (diff) | |
| download | puppet-17843d5e86a8841728a77c77d5f2ea4661c0f417.tar.gz puppet-17843d5e86a8841728a77c77d5f2ea4661c0f417.tar.xz puppet-17843d5e86a8841728a77c77d5f2ea4661c0f417.zip | |
(#5882) Added error-handling to puppet inspect when auditing
If auditing a resource fails, the report will contain failure events for every
audited property of the resource. The report itself will also be marked as
"failed".
Paired-With: Paul Berry
Diffstat (limited to 'lib/puppet')
| -rw-r--r-- | lib/puppet/application/inspect.rb | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/lib/puppet/application/inspect.rb b/lib/puppet/application/inspect.rb index b4d263545..5254afbd0 100644 --- a/lib/puppet/application/inspect.rb +++ b/lib/puppet/application/inspect.rb @@ -64,30 +64,45 @@ class Puppet::Application::Inspect < Puppet::Application audited_attributes = ral_resource[:audit] next unless audited_attributes - audited_resource = ral_resource.to_resource - status = Puppet::Resource::Status.new(ral_resource) - audited_attributes.each do |name| - next if audited_resource[name].nil? - # Skip :absent properties of :absent resources. Really, it would be nicer if the RAL returned nil for those, but it doesn't. ~JW - if name == :ensure or audited_resource[:ensure] != :absent or audited_resource[name] != :absent + + begin + audited_resource = ral_resource.to_resource + rescue StandardError => detail + puts detail.backtrace if Puppet[:trace] + ral_resource.err "Could not inspect #{ral_resource}; skipping: #{detail}" + audited_attributes.each do |name| event = ral_resource.event( - :previous_value => audited_resource[name], - :property => name, - :status => "audit", - :audited => true, - :message => "inspected value is #{audited_resource[name].inspect}" + :property => name, + :status => "failure", + :audited => true, + :message => "failed to inspect #{name}" ) status.add_event(event) end + else + audited_attributes.each do |name| + next if audited_resource[name].nil? + # Skip :absent properties of :absent resources. Really, it would be nicer if the RAL returned nil for those, but it doesn't. ~JW + if name == :ensure or audited_resource[:ensure] != :absent or audited_resource[name] != :absent + event = ral_resource.event( + :previous_value => audited_resource[name], + :property => name, + :status => "audit", + :audited => true, + :message => "inspected value is #{audited_resource[name].inspect}" + ) + status.add_event(event) + end + end end - @report.add_resource_status(status) if Puppet[:archive_files] and ral_resource.type == :file and audited_attributes.include?(:content) path = ral_resource[:path] if File.readable?(path) dipper.backup(path) end end + @report.add_resource_status(status) end finishtime = Time.now |
