The Puppet Labs Issue Tracker has Moved:

Feature #2728

augeas show print file changes as applicable via --show_diff

Added by defunt Bode over 4 years ago. Updated over 2 years ago.

Status:ClosedStart date:10/16/2009
Priority:NormalDue date:
Assignee:Bryan Kearney% Done:


Target version:2.7.3
Affected Puppet version:0.25.0 Branch:

We've Moved!

Ticket tracking is now hosted in JIRA:

This issue is currently not available for export. If you are experiencing the issue described below, please file a new ticket in JIRA. Once a new ticket has been created, please add a link to it that points back to this Redmine ticket.


It would be nice for augeas to display changes when puppetd is run from the command line.

(Just like file changes with show_diff)

Related issues

Related to Puppet - Bug #8808: No error when an Augeas resource cannot be saved Closed 08/06/2011


#1 Updated by James Turnbull over 4 years ago

  • Status changed from Unreviewed to Needs Decision
  • Assignee set to David Lutterkort
  • Target version set to 2.6.0

#2 Updated by James Turnbull about 4 years ago

  • Target version changed from 2.6.0 to 2.7.x

#3 Updated by James Turnbull over 3 years ago

  • Assignee changed from David Lutterkort to Bryan Kearney

#4 Updated by Bryan Kearney over 3 years ago

  • Status changed from Needs Decision to Needs More Information

can you give an example of what you would like to see?

#5 Updated by Michael Knox about 3 years ago

  • Target version changed from 2.7.x to 2.6.x

This has been bugging me for a while, so I’ve created a patch so Puppet will show the changes that the Augeas provider will make.

Output sample is:

info: Augeas[my.cnf/mysqld](provider=augeas): --- /etc/my.cnf   2011-03-18 18:09:46.343264543 +1100
+++ /etc/my.cnf.augnew  2011-03-18 21:29:39.706254147 +1100
@@ -133,7 +133,7 @@

notice: /Stage[main]/Mysql::Server/Augeas[my.cnf/mysqld]/returns: is need_to_run, should be 0 (noop)

Also this issue seems to be duplicated by feature #5400

#6 Updated by Michael Knox about 3 years ago

  • Branch set to

#7 Updated by Josh Cooper almost 3 years ago

  • Status changed from Needs More Information to Code Insufficient
  • Target version deleted (2.6.x)

Hi Michael,

Thank you for submitting this patch. I found some issues that need to be resolved before we can accept them. Could you take a look and resubmit when you can?

There were the issues Dominic mentioned on the mailing list:

  • Change diff to be consistent with the file type, see lib/puppet/type/file/content.rb.

  • The close_augeas method (below) won’t be called if return_value is false. Also, if there’s an exception parsing the filter, or if the augeas version is < 0.3.6, it won’t be called. I suggest you change it so that the close_augeas method is only skipped if we successfully save the .augnew files.

-      close_augeas
+      if Puppet[:noop]
+        close_augeas
+      end
  • When checking noop, it should check the resource noop? method. See lib/puppet/type.rb.

Also, I encountered the following issues after applying your patch. I am using Mac OS X 10.7, augeas 0.7.4, ruby-augeas 0.3.0, and ruby 1.8.7:

  • I’m not able to run puppet due to some change in runtime include dependencies:
$ puppet describe augeas
Could not run: 
Could not autoload /Users/josh/work/puppet/lib/puppet/type/augeas.rb:
Could not autoload /Users/josh/work/puppet/lib/puppet/provider/augeas/augeas.rb: uninitialized constant Puppet::Util::Diff

Adding the following to lib/puppet/provider/augeas/augeas.rb fixed the problem for me:

require 'puppet/util'
require 'puppet/util/diff'
  • The augeas tests fail because of the change from @aug.match to @aug.get in lib/puppet/provider/augeas/augeas.rb
-          saved_files = @aug.match("/augeas/events/saved")
+          saved_files = @aug.get("/augeas/events/saved")

$ rspec -d spec/unit/provider/augeas/augeas_spec.rb
1) Puppet::Type::Augeas::ProviderAugeas augeas execution integration should handle set commands
  Failure/Error: @provider.execute_changes.should == :executed
    unexpected invocation: #.get('/augeas/events/saved')

One problem with this change is that @aug.get returns nil if no files were saved (so the following call to saved_files.each generates an exception), whereas @aug.match returns an empty list. But more importantly, augeas may save multiple files, and you need to iterate over the list returned by match.

saved_files = @aug.get("/augeas/events/saved")
  saved_files.each do |tmp_file|

  • Also, @aug.match(“/augeas/events/saved”) doesn’t return the name of the files that were saved, but a list of keys, whose values are the saved file names. For example:

To resolve the file name, you have to call @aug.get(..) with the key, e.g. @aug.get(“/augeas/events/saved[1]”)

  • The code does not take into account a non-default resource[:root] setting.
augeas { "test1" :
  root => "/tmp/augeas-sandbox",

I think this can be accounted for as follows (where tmp_file is the “value” returned from @aug.get(..) above):

-          saved_file = tmp_file.sub(/^\/files/, '')
+          saved_file = tmp_file.sub(/^\/files/, resource[:root])
  • In execute_changes, if there are saved files and we successfully rename them, we don’t need to call

#8 Updated by Dominic Cleal almost 3 years ago

Nigel also requested some tests on -dev, so I created a couple of simple ones the other day – you might want to cherry-pick this commit from my branch:

There did seem to be some issues for me trying to merge your branch, perhaps because of the ActiveRecord change you backed out – it’d be worth double checking your branch is in a sane state.

#9 Updated by Michael Knox almost 3 years ago

Thanks for the comments, I’ve made the code changes in my branch.

I’ll have a go at incorporating the tests now.

#10 Updated by Josh Cooper almost 3 years ago

  • Status changed from Code Insufficient to Merged - Pending Release
  • Target version set to 2.7.x

Merged into 2.7.x as commit:ae8069c0afc981d27012d7e1cf6fd1f63e0b6d94

#11 Updated by Michael Stahnke almost 3 years ago

Available in 2.7 series.

#12 Updated by Michael Stahnke almost 3 years ago

  • Status changed from Merged - Pending Release to Closed

#13 Updated by James Turnbull over 2 years ago

  • Target version changed from 2.7.x to 2.7.3

Also available in: Atom PDF