On Tue, Jun 7, 2011 at 2:42 PM, Nick Lewis <[email protected]> wrote:
> Previously, pointing a setting like 'confdir' at a symlink to a directory > would > replace the symlink with a directory. This was because files created by > settings implicitly managed links, rather than following them. This > behavior is > now changed so that file settings will follow links. > and there was much rejoicing! Love getting those 3-digit bugs resolved :) > > The behavior of these symlinks is the same as any other file resource. That > is, > if the target of the symlink doesn't exist, Puppet will consider this an > error. Similarly, if the target of the symlink is a file, then the symlink > will still be replaced with a directory, rather than replacing its target. > > Reviewed-By: Jacob Helwig <[email protected]> > Reviewed-By: Dominic Maraglia <[email protected]> > Signed-off-by: Nick Lewis <[email protected]> > --- > .../tests/allow_symlinks_as_config_directories.rb | 27 > ++++++++++++++++++++ > lib/puppet/util/settings/file_setting.rb | 1 + > spec/unit/util/settings/file_setting_spec.rb | 4 +++ > 3 files changed, 32 insertions(+), 0 deletions(-) > create mode 100644 > acceptance/tests/allow_symlinks_as_config_directories.rb > > diff --git a/acceptance/tests/allow_symlinks_as_config_directories.rb > b/acceptance/tests/allow_symlinks_as_config_directories.rb > new file mode 100644 > index 0000000..66c6ccc > --- /dev/null > +++ b/acceptance/tests/allow_symlinks_as_config_directories.rb > @@ -0,0 +1,27 @@ > +test_name "Should allow symlinks to directories as configuration > directories" > + > +step "Create the test confdir with a link to it" > +confdir = "/tmp/puppet_conf-directory-#{$$}" > +conflink = "/tmp/puppet_conf-symlink-#{$$}" > + > +on agents, "rm -rf #{conflink} #{confdir}" > + > +on agents, "mkdir #{confdir}" > +on agents, "ln -s #{confdir} #{conflink}" > + > +create_remote_file agents, "#{confdir}/puppet.conf", <<CONFFILE > +[main] > +certname = "awesome_certname" > +CONFFILE > + > +manifest = 'notify{"My certname is $clientcert": }' > + > +step "Run Puppet and ensure it used the conf file in the confdir" > +on agents, puppet_apply("--confdir #{conflink}"), :stdin => manifest do > + assert_match("My certname is awesome_certname", stdout) > +end > + > +step "Check that the symlink and confdir are unchanged" > +on agents, "[ -L #{conflink} ]" > +on agents, "[ -d #{confdir} ]" > +on agents, "[ $(readlink #{conflink}) = #{confdir} ]" > diff --git a/lib/puppet/util/settings/file_setting.rb > b/lib/puppet/util/settings/file_setting.rb > index edbab1d..776398e 100644 > --- a/lib/puppet/util/settings/file_setting.rb > +++ b/lib/puppet/util/settings/file_setting.rb > @@ -101,6 +101,7 @@ class Puppet::Util::Settings::FileSetting < > Puppet::Util::Settings::Setting > > resource[:ensure] = type > resource[:loglevel] = :debug > + resource[:links] = :follow > resource[:backup] = false > > resource.tag(self.section, self.name, "settings") > diff --git a/spec/unit/util/settings/file_setting_spec.rb > b/spec/unit/util/settings/file_setting_spec.rb > index dcfb6e3..1167e97 100755 > --- a/spec/unit/util/settings/file_setting_spec.rb > +++ b/spec/unit/util/settings/file_setting_spec.rb > @@ -249,6 +249,10 @@ describe Puppet::Util::Settings::FileSetting do > it "should tag the resource with 'settings'" do > @file.to_resource.should be_tagged("settings") > end > + > + it "should set links to 'follow'" do > + @file.to_resource[:links].should == :follow > + end > end > end > > -- > 1.7.5.1 > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Developers" 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-dev?hl=en. > > -- Nigel Kersten Product, Puppet Labs @nigelkersten -- You received this message because you are subscribed to the Google Groups "Puppet Developers" 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-dev?hl=en.
