[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, upstream, updated. 2.6.5rc1-120-g2247c80
Daniel Pittman
daniel at rimspace.net
Mon Feb 7 06:43:02 UTC 2011
The following commit has been merged in the upstream branch:
commit c912a2af2f63f505a493137d4ff0b88bc3754cda
Author: Daniel Pittman <daniel at rimspace.net>
Date: Thu Feb 3 13:46:08 2011 -0800
(#4139) hook log autoflush into global defaults
We previously had an ordering dependency in the autoflush option, which was
statically read from defaults when the log destination was configured.
We add a hook in the defaults to update the log subsystem, which in turn
updates log destinations, when autoflush is changed.
This would work as desired:
puppet agent --autoflush --logdest=file
This would not work, as autoflush would be false:
puppet agent --logdest=file --autoflush
Now those changes propagate correctly.
Paired-with: matt at puppetlabs.com
diff --git a/lib/puppet/defaults.rb b/lib/puppet/defaults.rb
index 764cbbe..687ac4e 100644
--- a/lib/puppet/defaults.rb
+++ b/lib/puppet/defaults.rb
@@ -14,7 +14,11 @@ module Puppet
setdefaults(:main,
:trace => [false, "Whether to print stack traces on some errors"],
- :autoflush => [false, "Whether log files should always flush to disk."],
+ :autoflush => {
+ :default => false,
+ :desc => "Whether log files should always flush to disk.",
+ :hook => proc { |value| Log.autoflush = value }
+ },
:syslogfacility => ["daemon", "What syslog facility to use when logging to
syslog. Syslog has a fixed list of valid facilities, and you must
choose one of those; you cannot just make one up."],
diff --git a/lib/puppet/util/log.rb b/lib/puppet/util/log.rb
index 3fdac3f..ba16900 100644
--- a/lib/puppet/util/log.rb
+++ b/lib/puppet/util/log.rb
@@ -67,6 +67,12 @@ class Puppet::Util::Log
}
end
+ def Log.autoflush=(v)
+ @destinations.each do |type, dest|
+ dest.autoflush = v if dest.respond_to?(:autoflush=)
+ end
+ end
+
# Create a new log message. The primary role of this method is to
# avoid creating log messages below the loglevel.
def Log.create(hash)
diff --git a/lib/puppet/util/log/destinations.rb b/lib/puppet/util/log/destinations.rb
index 22b3ded..c70edeb 100644
--- a/lib/puppet/util/log/destinations.rb
+++ b/lib/puppet/util/log/destinations.rb
@@ -50,6 +50,8 @@ Puppet::Util::Log.newdesttype :file do
@file.flush if defined?(@file)
end
+ attr_accessor :autoflush
+
def initialize(path)
@name = path
# first make sure the directory exists
diff --git a/spec/unit/util/log/destinations_spec.rb b/spec/unit/util/log/destinations_spec.rb
index 6596c06..710a517 100755
--- a/spec/unit/util/log/destinations_spec.rb
+++ b/spec/unit/util/log/destinations_spec.rb
@@ -22,3 +22,16 @@ describe Puppet::Util::Log.desttypes[:report] do
dest.handle "my log"
end
end
+
+
+describe Puppet::Util::Log.desttypes[:file] do
+ before do
+ File.stubs(:open) # prevent actually creating the file
+ @class = Puppet::Util::Log.desttypes[:file]
+ end
+
+ it "should default to autoflush false" do
+ @class.new('/tmp/log').autoflush.should == false
+ end
+end
+
diff --git a/spec/unit/util/log_spec.rb b/spec/unit/util/log_spec.rb
index f3fd1b0..4a30d50 100755
--- a/spec/unit/util/log_spec.rb
+++ b/spec/unit/util/log_spec.rb
@@ -136,6 +136,11 @@ describe Puppet::Util::Log do
Puppet::Util::Log.new(:level => "notice", :message => :foo)
end
+ it "should update Log autoflush when Puppet[:autoflush] is set" do
+ Puppet::Util::Log.expects(:autoflush=).once.with(true)
+ Puppet[:autoflush] = true
+ end
+
it "should have a method for determining if a tag is present" do
Puppet::Util::Log.new(:level => "notice", :message => :foo).should respond_to(:tagged?)
end
--
Puppet packaging for Debian
More information about the Pkg-puppet-devel
mailing list