summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorDominic Cleal <dcleal@redhat.com>2011-08-07 09:55:09 +0100
committerDominic Cleal <dcleal@redhat.com>2011-08-07 09:55:09 +0100
commit000b8fef6a33e5c9f56c0801523de15a0e5bc30b (patch)
treea4e9eec5a8e2a6bfd5411b441d8bb214d54aaa5b /lib/puppet
parent9d09b077a33c1324d53f2725fcf61b529deafb4b (diff)
downloadpuppet-000b8fef6a33e5c9f56c0801523de15a0e5bc30b.tar.gz
puppet-000b8fef6a33e5c9f56c0801523de15a0e5bc30b.tar.xz
puppet-000b8fef6a33e5c9f56c0801523de15a0e5bc30b.zip
(#5606) Print Augeas' /augeas//error info to debug on save failure
When saving fails, the contents of /augeas//error (for put_failed) are printed to the debug log. Should help users track down the issue without needing to replicate it with augtool.
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/provider/augeas/augeas.rb23
1 files changed, 20 insertions, 3 deletions
diff --git a/lib/puppet/provider/augeas/augeas.rb b/lib/puppet/provider/augeas/augeas.rb
index eb9c69ac8..76c7e7717 100644
--- a/lib/puppet/provider/augeas/augeas.rb
+++ b/lib/puppet/provider/augeas/augeas.rb
@@ -259,6 +259,18 @@ Puppet::Type.type(:augeas).provide(:augeas) do
@aug.set("/augeas/save", mode)
end
+ def print_put_errors
+ errors = @aug.match("/augeas//error[. = 'put_failed']")
+ debug("Put failed on one or more files, output from /augeas//error:") unless errors.empty?
+ errors.each do |errnode|
+ @aug.match("#{errnode}/*").each do |subnode|
+ sublabel = subnode.split("/")[-1]
+ subvalue = @aug.get(subnode)
+ debug("#{sublabel} = #{subvalue}")
+ end
+ end
+ end
+
# Determines if augeas acutally needs to run.
def need_to_run?
force = resource[:force]
@@ -290,7 +302,10 @@ Puppet::Type.type(:augeas).provide(:augeas) do
set_augeas_save_mode(SAVE_NEWFILE)
do_execute_changes
save_result = @aug.save
- fail("Save failed with return code #{save_result}") unless save_result
+ unless save_result
+ print_put_errors
+ fail("Save failed with return code #{save_result}, see debug")
+ end
saved_files = @aug.match("/augeas/events/saved")
if saved_files.size > 0
@@ -339,8 +354,10 @@ Puppet::Type.type(:augeas).provide(:augeas) do
debug("No saved files, re-executing augeas")
set_augeas_save_mode(SAVE_OVERWRITE) if get_augeas_version >= "0.3.6"
do_execute_changes
- success = @aug.save
- fail("Save failed with return code #{success}") if success != true
+ unless @aug.save
+ print_put_errors
+ fail("Save failed with return code #{success}, see debug")
+ end
end
ensure
close_augeas