diff options
-rw-r--r-- | lib/puppet/config.rb | 4 | ||||
-rw-r--r-- | lib/puppet/parser/interpreter.rb | 15 | ||||
-rw-r--r-- | lib/puppet/server/master.rb | 10 | ||||
-rwxr-xr-x | lib/puppet/type/package/yum.rb | 30 | ||||
-rwxr-xr-x | test/language/functions.rb | 1 | ||||
-rw-r--r-- | test/server/master.rb | 11 | ||||
-rwxr-xr-x | test/types/host.rb | 1 | ||||
-rwxr-xr-x | test/types/sshkey.rb | 1 |
8 files changed, 30 insertions, 43 deletions
diff --git a/lib/puppet/config.rb b/lib/puppet/config.rb index c697545ce..c5da14880 100644 --- a/lib/puppet/config.rb +++ b/lib/puppet/config.rb @@ -348,7 +348,9 @@ class Config def reparse if defined? @file and @file.changed? Puppet.notice "Reparsing %s" % @file.file - parse(@file) + @@sync.synchronize do + parse(@file) + end reuse() end end diff --git a/lib/puppet/parser/interpreter.rb b/lib/puppet/parser/interpreter.rb index 012d7a82a..246bdce5b 100644 --- a/lib/puppet/parser/interpreter.rb +++ b/lib/puppet/parser/interpreter.rb @@ -52,7 +52,7 @@ module Puppet requires ActiveRecord from Ruby on Rails."] ) - attr_accessor :ast, :filetimeout + attr_accessor :ast class << self attr_writer :ldap @@ -88,7 +88,6 @@ module Puppet elsif ! @file = hash[:Manifest] raise Puppet::DevError, "You must provide code or a manifest" end - @filetimeout = hash[:ParseCheck] || 15 @lastchecked = 0 @@ -388,15 +387,9 @@ module Puppet # Check if the parser should reparse. if @file if defined? @parser - # Only check the files every 15 seconds or so, not on - # every single connection - if (Time.now - @lastchecked).to_i >= @filetimeout.to_i - unless @parser.reparse? - @lastchecked = Time.now - return false - end - else - return + unless @parser.reparse? + @lastchecked = Time.now + return false end end diff --git a/lib/puppet/server/master.rb b/lib/puppet/server/master.rb index 1c5715a60..72f7e7abf 100644 --- a/lib/puppet/server/master.rb +++ b/lib/puppet/server/master.rb @@ -36,14 +36,6 @@ class Server end end - def filetimeout - @interpreter.filetimeout - end - - def filetimeout=(int) - @interpreter.filetimeout = int - end - # Tell a client whether there's a fresh config for it def freshness(client = nil, clientip = nil) if defined? @interpreter @@ -77,8 +69,6 @@ class Server @ca = nil end - args[:ParseCheck] = hash[:FileTimeout] || 15 - Puppet.debug("Creating interpreter") if hash.include?(:UseNodes) diff --git a/lib/puppet/type/package/yum.rb b/lib/puppet/type/package/yum.rb index a1336cd9b..fa214c7d6 100755 --- a/lib/puppet/type/package/yum.rb +++ b/lib/puppet/type/package/yum.rb @@ -1,32 +1,32 @@ module Puppet Puppet.type(:package).newpkgtype(:yum, :rpm) do + include Puppet::Util # Install a package using 'yum'. def install cmd = "yum -y install %s" % self[:name] - self.info "Executing %s" % cmd.inspect - output = %x{#{cmd} 2>&1} + begin + output = execute(cmd) + rescue Puppet::ExecutionFailure => detail + raise Puppet::PackageError.new(detail) + end - unless $? == 0 - raise Puppet::PackageError.new(output) - else - @states[:ensure].retrieve - if @states[:ensure].is == :absent - raise Puppet::PackageError.new( - "Could not find package %s" % self.name - ) - end + @states[:ensure].retrieve + if @states[:ensure].is == :absent + raise Puppet::PackageError.new( + "Could not find package %s" % self.name + ) end end # What's the latest package version available? def latest cmd = "yum list available %s" % self[:name] - self.info "Executing %s" % cmd.inspect - output = %x{#{cmd} 2>&1} - unless $? == 0 - raise Puppet::PackageError.new(output) + begin + output = execute(cmd) + rescue Puppet::ExecutionFailure => detail + raise Puppet::PackageError.new(detail) end if output =~ /#{self[:name]}\S+\s+(\S+)\s/ diff --git a/test/language/functions.rb b/test/language/functions.rb index 1ee7ccf8e..d931470fc 100755 --- a/test/language/functions.rb +++ b/test/language/functions.rb @@ -224,6 +224,7 @@ class TestLangFunctions < Test::Unit::TestCase assert_equal("original text\n", fileobj["content"], "Template did not work") + Puppet[:filetimeout] = 0 # Have to sleep because one second is the fs's time granularity. sleep(1) diff --git a/test/server/master.rb b/test/server/master.rb index e3f065087..18e23311c 100644 --- a/test/server/master.rb +++ b/test/server/master.rb @@ -102,6 +102,8 @@ class TestMaster < Test::Unit::TestCase end def test_filereread + # Start with a normal setting + Puppet[:filetimeout] = 15 manifest = mktestmanifest() file2 = @createdfile + "2" @@ -113,8 +115,7 @@ class TestMaster < Test::Unit::TestCase master = Puppet::Server::Master.new( :Manifest => manifest, :UseNodes => false, - :Local => true, - :FileTimeout => 15 + :Local => true ) } assert_nothing_raised() { @@ -153,10 +154,8 @@ class TestMaster < Test::Unit::TestCase assert_equal(parse1, master.freshness, "Master did not wait through timeout") assert(client.fresh?, "Client is not up to date") - assert_nothing_raised("Could not resent the file timeout") { - master.filetimeout = 0 - } - assert_equal(0, master.filetimeout) + # Then eliminate it + Puppet[:filetimeout] = 0 # Now make sure the master does reparse #Puppet.notice "%s vs %s" % [parse1, master.freshness] diff --git a/test/types/host.rb b/test/types/host.rb index b842c1cfb..2e5121451 100755 --- a/test/types/host.rb +++ b/test/types/host.rb @@ -21,6 +21,7 @@ class TestHost < Test::Unit::TestCase end def teardown + Puppet::FileType.filetype(:ram).clear @hosttype.filetype = @oldhosttype Puppet.type(:file).clear super diff --git a/test/types/sshkey.rb b/test/types/sshkey.rb index 5186d06cc..ff9adc336 100755 --- a/test/types/sshkey.rb +++ b/test/types/sshkey.rb @@ -22,6 +22,7 @@ class TestSSHKey < Test::Unit::TestCase end def teardown + Puppet::FileType.filetype(:ram).clear @sshtype.filetype = @oldfiletype Puppet.type(:file).clear super |