Issue #3387 has been updated by James Turnbull.

Target version changed from 0.25.5 to 0.25.6


----------------------------------------
Bug #3387: backslashes aren't correctly passed to augeas anymore
http://projects.puppetlabs.com/issues/3387

Author: Marc Fournier
Status: Available In Testing Branch
Priority: Normal
Assigned to: Bryan Kearney
Category: augeas
Target version: 0.25.6
Affected version: 0.25.4
Keywords: 
Branch: http://github.com/bkearney/puppet/tree/ticket/0.25.x/3387


The following code snippet used to work on 0.24.8:

<pre>
augeas { "set rsyncd pidfile":
  context => "/files/etc/rsyncd.conf/.anon/",
  changes => "set 'pid\ file' /var/run/rsyncd.pid",
}
</pre>

But I now get the following error (tested on the tip of 
bkearney/ticket/0.25.x/3379 as well as 0.25.4, on redhat and debian, with 
augeas 0.7.0):

<pre>
warning: Unrecognised escape sequence '\ ' in file 
/home/marc/src/puppet/augbug.pp at line 3
debug: Creating default schedules
debug: Failed to load library 'selinux' for feature 'selinux'
debug: Puppet::Type::User::ProviderLdap: true value when expecting false
debug: Puppet::Type::User::ProviderUser_role_add: file roleadd does not exist
debug: Puppet::Type::User::ProviderDirectoryservice: file /usr/bin/dscl does 
not exist
debug: Puppet::Type::User::ProviderPw: file pw does not exist
debug: Failed to load library 'ldap' for feature 'ldap'
debug: /File[/etc/puppet/ssl/private_keys]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/puppet/lib]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/client_yaml]: Autorequiring File[/var/puppet]
debug: /File[/etc/puppet/ssl/public_keys]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/puppet/clientbucket]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/state]: Autorequiring File[/var/puppet]
debug: /File[/etc/puppet/ssl]: Autorequiring File[/etc/puppet]
debug: /File[/etc/puppet/ssl/certs]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/puppet/run]: Autorequiring File[/var/puppet]
debug: /File[/etc/puppet/ssl/certificate_requests]: Autorequiring 
File[/etc/puppet/ssl]
debug: /File[/var/puppet/log]: Autorequiring File[/var/puppet]
debug: /File[/etc/puppet/ssl/private]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/puppet/state/graphs]: Autorequiring File[/var/puppet/state]
debug: /File[/var/puppet/facts]: Autorequiring File[/var/puppet]
debug: Finishing transaction 70143984607080 with 0 changes
info: Applying configuration version '1268907221'
debug: Augeas[set rsyncd pidfile](provider=augeas): Opening augeas with root /, 
lens path , flags 0
debug: Augeas[set rsyncd pidfile](provider=augeas): Augeas version 0.7.0 is 
installed
debug: Augeas[set rsyncd pidfile](provider=augeas): Will attempt to save and 
only run if files changed
debug: Augeas[set rsyncd pidfile](provider=augeas): sending command 'set' with 
params ["/files/etc/rsyncd.conf/.anon/'pid\\ file'", "/var/run/rsyncd.pid"]
debug: Augeas[set rsyncd pidfile](provider=augeas): Files changed, should 
execute
debug: Augeas[set rsyncd pidfile](provider=augeas): Closed the augeas connection
debug: //Augeas[set rsyncd pidfile]: Changing returns
debug: //Augeas[set rsyncd pidfile]: 1 change(s)
debug: Augeas[set rsyncd pidfile](provider=augeas): Opening augeas with root /, 
lens path , flags 0
debug: Augeas[set rsyncd pidfile](provider=augeas): Augeas version 0.7.0 is 
installed
debug: Augeas[set rsyncd pidfile](provider=augeas): sending command 'set' with 
params ["/files/etc/rsyncd.conf/.anon/'pid\\ file'", "/var/run/rsyncd.pid"]
debug: Augeas[set rsyncd pidfile](provider=augeas): Closed the augeas connection
err: //Augeas[set rsyncd pidfile]/returns: change from need_to_run to 0 failed: 
Save failed with return code false
debug: Finishing transaction 70143984239220 with 1 changes
</pre>

Removing the backslash:

<pre>
augeas { "set rsyncd pidfile":
  context => "/files/etc/rsyncd.conf/.anon/",
  changes => "set 'pid file' /var/run/rsyncd.pid",
}
</pre>

... makes the warning disappear but not the error (which is slightly different):

<pre>
debug: Creating default schedules
debug: Failed to load library 'selinux' for feature 'selinux'
debug: Puppet::Type::User::ProviderLdap: true value when expecting false
debug: Puppet::Type::User::ProviderUser_role_add: file roleadd does not exist
debug: Puppet::Type::User::ProviderDirectoryservice: file /usr/bin/dscl does 
not exist
debug: Puppet::Type::User::ProviderPw: file pw does not exist
debug: Failed to load library 'ldap' for feature 'ldap'
debug: /File[/var/puppet/state]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/clientbucket]: Autorequiring File[/var/puppet]
debug: /File[/etc/puppet/ssl/private_keys]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/etc/puppet/ssl/certificate_requests]: Autorequiring 
File[/etc/puppet/ssl]
debug: /File[/etc/puppet/ssl/private]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/puppet/state/graphs]: Autorequiring File[/var/puppet/state]
debug: /File[/var/puppet/log]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/client_yaml]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/run]: Autorequiring File[/var/puppet]
debug: /File[/etc/puppet/ssl]: Autorequiring File[/etc/puppet]
debug: /File[/etc/puppet/ssl/certs]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/puppet/lib]: Autorequiring File[/var/puppet]
debug: /File[/etc/puppet/ssl/public_keys]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/puppet/facts]: Autorequiring File[/var/puppet]
debug: Finishing transaction 69911763370840 with 0 changes
info: Applying configuration version '1268907443'
debug: Augeas[set rsyncd pidfile](provider=augeas): Opening augeas with root /, 
lens path , flags 0
debug: Augeas[set rsyncd pidfile](provider=augeas): Augeas version 0.7.0 is 
installed
debug: Augeas[set rsyncd pidfile](provider=augeas): Will attempt to save and 
only run if files changed
debug: Augeas[set rsyncd pidfile](provider=augeas): sending command 'set' with 
params ["/files/etc/rsyncd.conf/.anon/'pid", "file'"]
debug: Augeas[set rsyncd pidfile](provider=augeas): Files changed, should 
execute
debug: Augeas[set rsyncd pidfile](provider=augeas): Closed the augeas connection
debug: //Augeas[set rsyncd pidfile]: Changing returns
debug: //Augeas[set rsyncd pidfile]: 1 change(s)
debug: Augeas[set rsyncd pidfile](provider=augeas): Opening augeas with root /, 
lens path , flags 0
debug: Augeas[set rsyncd pidfile](provider=augeas): Augeas version 0.7.0 is 
installed
debug: Augeas[set rsyncd pidfile](provider=augeas): sending command 'set' with 
params ["/files/etc/rsyncd.conf/.anon/'pid", "file'"]
debug: Augeas[set rsyncd pidfile](provider=augeas): Closed the augeas connection
err: //Augeas[set rsyncd pidfile]/returns: change from need_to_run to 0 failed: 
Save failed with return code false
debug: Finishing transaction 69911763001060 with 1 changes
</pre>


Changing the resource like this:

<pre>
augeas { "set rsyncd pidfile":
  #context => "/files/etc/rsyncd.conf/.anon/",
  changes => "set '/files/etc/rsyncd.conf/.anon/pid\ file' /var/run/rsyncd.pid",
}
</pre>

... removes the error but not the warning, and fails to add/change the line as 
expected (so I guess this should produce an error and fail instead of the 
warning):

<pre>
warning: Unrecognised escape sequence '\ ' in file /tmp/aug.pp at line 3
debug: Creating default schedules
debug: Puppet::Type::User::ProviderPw: file pw does not exist
debug: Puppet::Type::User::ProviderDirectoryservice: file /usr/bin/dscl does 
not exist
debug: Puppet::Type::User::ProviderUser_role_add: file roleadd does not exist
debug: Failed to load library 'ldap' for feature 'ldap'
debug: Puppet::Type::User::ProviderLdap: feature ldap is missing
debug: /File[/var/lib/puppet/ssl/certs/kisvm5.epfl.ch.pem]: Autorequiring 
File[/var/lib/puppet/ssl/certs]
debug: /File[/var/lib/puppet/ssl/certificate_requests]: Autorequiring 
File[/var/lib/puppet/ssl]
debug: /File[/var/puppet/facts]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/run]: Autorequiring File[/var/puppet]
debug: /File[/var/lib/puppet/ssl/private]: Autorequiring 
File[/var/lib/puppet/ssl]
debug: /File[/var/lib/puppet/ssl/public_keys]: Autorequiring 
File[/var/lib/puppet/ssl]
debug: /File[/var/puppet/state/graphs]: Autorequiring File[/var/puppet/state]
debug: /File[/var/puppet/state/state.yaml]: Autorequiring 
File[/var/puppet/state]
debug: /File[/var/lib/puppet/ssl/private_keys/kisvm5.epfl.ch.pem]: 
Autorequiring File[/var/lib/puppet/ssl/private_keys]
debug: /File[/var/lib/puppet/ssl/public_keys/kisvm5.epfl.ch.pem]: Autorequiring 
File[/var/lib/puppet/ssl/public_keys]
debug: /File[/var/puppet/state]: Autorequiring File[/var/puppet]
debug: /File[/var/lib/puppet/ssl/certs/ca.pem]: Autorequiring 
File[/var/lib/puppet/ssl/certs]
debug: /File[/var/lib/puppet/ssl/csr_kisvm5.epfl.ch.pem]: Autorequiring 
File[/var/lib/puppet/ssl]
debug: /File[/var/puppet/clientbucket]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/lib]: Autorequiring File[/var/puppet]
debug: /File[/var/lib/puppet/ssl/certs]: Autorequiring File[/var/lib/puppet/ssl]
debug: /File[/var/lib/puppet/ssl/private_keys]: Autorequiring 
File[/var/lib/puppet/ssl]
debug: /File[/var/puppet/state/classes.txt]: Autorequiring 
File[/var/puppet/state]
debug: /File[/var/puppet/client_yaml]: Autorequiring File[/var/puppet]
debug: /File[/var/puppet/log]: Autorequiring File[/var/puppet]
debug: /File[/var/lib/puppet/ssl/crl.pem]: Autorequiring 
File[/var/lib/puppet/ssl]
debug: Finishing transaction 23456254014360 with 0 changes
info: Applying configuration version '1268908267'
debug: Augeas[set rsyncd pidfile](provider=augeas): Opening augeas with root /, 
lens path , flags 0
debug: Augeas[set rsyncd pidfile](provider=augeas): Augeas version 0.7.0 is 
installed
debug: Augeas[set rsyncd pidfile](provider=augeas): Will attempt to save and 
only run if files changed
debug: Augeas[set rsyncd pidfile](provider=augeas): sending command 'set' with 
params ["'/files/etc/rsyncd.conf/.anon/pid\\ file'", "/var/run/rsyncd.pid"]
debug: Augeas[set rsyncd pidfile](provider=augeas): Skipping becuase no files 
were changed
debug: Augeas[set rsyncd pidfile](provider=augeas): Closed the augeas connection
debug: Finishing transaction 23456254927480 with 0 changes
</pre>


This is the syntax which works, using the cli tool:

<pre>
# augtool
augtool> set "/files/etc/rsyncd.conf/.anon/pid\ file" /var/run/rsyncd.pid
augtool> save
Saved 1 file(s)
</pre>

I'm not sure if this is an augeas bug or if it could be something that changed 
in the way puppet deals with backslashes.




-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.

Reply via email to