From 27d5a4782c442908c71bb9abac9f78654581eacf Mon Sep 17 00:00:00 2001 From: Matt Robinson Date: Mon, 12 Jul 2010 16:57:35 -0700 Subject: [#4215] Have rundir depend on vardir This came up because if you ran puppetd with a specific vardir, then when rundir got set to a hardcoded value its parent directory might not exist and the whole thing would fail. This change came about with the concept of run_mode, and this fix is restoring the behaviour that was in 0.25.x Reviewed-by: Jesse Wolfe Signed-off-by: Matt Robinson --- lib/puppet/util/run_mode.rb | 18 +++++++-------- spec/unit/util/run_mode_spec.rb | 51 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 9 deletions(-) create mode 100644 spec/unit/util/run_mode_spec.rb diff --git a/lib/puppet/util/run_mode.rb b/lib/puppet/util/run_mode.rb index eb9c511dc..450cbf1a6 100644 --- a/lib/puppet/util/run_mode.rb +++ b/lib/puppet/util/run_mode.rb @@ -40,17 +40,17 @@ module Puppet end def run_dir - which_dir("/var/run/puppet", "~/.puppet/var") + "$vardir/run" end def logopts - if name == :master + if master? { :default => "$vardir/log", - :mode => 0750, - :owner => "service", - :group => "service", - :desc => "The Puppet log directory." + :mode => 0750, + :owner => "service", + :group => "service", + :desc => "The Puppet log directory." } else ["$vardir/log", "The Puppet log directory."] @@ -64,9 +64,9 @@ module Puppet # there's a comment that suggests that we do that # and we currently don't. expand_path case - when name == :master; global - when Puppet.features.root?; global - else user + when name == :master; global + when Puppet.features.root?; global + else user end end diff --git a/spec/unit/util/run_mode_spec.rb b/spec/unit/util/run_mode_spec.rb new file mode 100644 index 000000000..d6ab08a10 --- /dev/null +++ b/spec/unit/util/run_mode_spec.rb @@ -0,0 +1,51 @@ +#!/usr/bin/env ruby + +require File.dirname(__FILE__) + '/../../spec_helper' + +describe Puppet::Util::RunMode do + before do + @run_mode = Puppet::Util::RunMode.new('fake') + end + + it "should have confdir /etc/puppet when run as root" do + Puppet.features.stubs(:root?).returns(true) + @run_mode.conf_dir.should == '/etc/puppet' + end + + it "should have confdir ~/.puppet when run as non-root" do + Puppet.features.stubs(:root?).returns(false) + @run_mode.expects(:expand_path).with("~/.puppet").returns("~/.puppet") + @run_mode.conf_dir.should == "~/.puppet" + end + + it "should have vardir /var/lib/puppet when run as root" do + Puppet.features.stubs(:root?).returns(true) + @run_mode.var_dir.should == '/var/lib/puppet' + end + + it "should have vardir ~/.puppet/var when run as non-root" do + Puppet.features.stubs(:root?).returns(false) + @run_mode.expects(:expand_path).with("~/.puppet/var").returns("~/.puppet/var") + @run_mode.var_dir.should == "~/.puppet/var" + end + + it "should have rundir depend on vardir" do + @run_mode.run_dir.should == '$vardir/run' + end + + it "should have logopts return an array with $vardir/log if runmode is not master" do + @run_mode.expects(:master?).returns false + @run_mode.logopts.should == ["$vardir/log", "The Puppet log directory."] + end + + it "should have logopts return a hash with $vardir/log and other metadata if runmode is master" do + @run_mode.expects(:master?).returns true + @run_mode.logopts.should == { + :default => "$vardir/log", + :mode => 0750, + :owner => "service", + :group => "service", + :desc => "The Puppet log directory.", + } + end +end -- cgit