[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, experimental, updated. debian/2.6.8-1-844-g7ec39d5

Jesse Wolfe jes5199 at gmail.com
Tue May 10 07:59:46 UTC 2011


The following commit has been merged in the experimental branch:
commit fb5f859cf4a89042a1768b6cbc2dbfc43da49c99
Author: Jesse Wolfe <jes5199 at gmail.com>
Date:   Mon Nov 1 11:45:27 2010 -0700

    Fix #5164 Change Facts timestamp when they are received by the master
    
    This patch causes the puppet master to re-timestamp facts when they are
    received by the catalog compiler terminus. This makes the timestamps
    more trustworthy, as it means that they are all based upon the same
    clock's time.
    
    Paired-With: Paul Berry <paul at puppetlabs.com>

diff --git a/lib/puppet/indirector/catalog/compiler.rb b/lib/puppet/indirector/catalog/compiler.rb
index c50022f..1e1ae12 100644
--- a/lib/puppet/indirector/catalog/compiler.rb
+++ b/lib/puppet/indirector/catalog/compiler.rb
@@ -22,6 +22,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
     else
       facts = Puppet::Node::Facts.convert_from(format, text_facts)
     end
+    facts.add_timestamp
     facts.save
   end
 
diff --git a/lib/puppet/node/facts.rb b/lib/puppet/node/facts.rb
index ad4b91e..d84d541 100755
--- a/lib/puppet/node/facts.rb
+++ b/lib/puppet/node/facts.rb
@@ -35,7 +35,7 @@ class Puppet::Node::Facts
     @name = name
     @values = values
 
-    add_internal
+    add_timestamp
   end
 
   def downcase_if_necessary
@@ -75,13 +75,21 @@ class Puppet::Node::Facts
     }.to_pson(*args)
   end
 
-  private
-
   # Add internal data to the facts for storage.
-  def add_internal
-    self.values[:_timestamp] = Time.now
+  def add_timestamp
+    self.timestamp = Time.now
+  end
+
+  def timestamp=(time)
+    self.values[:_timestamp] = time
   end
 
+  def timestamp
+    self.values[:_timestamp]
+  end
+
+  private
+
   # Strip out that internal data.
   def strip_internal
     newvals = values.dup
diff --git a/spec/unit/indirector/catalog/compiler_spec.rb b/spec/unit/indirector/catalog/compiler_spec.rb
index a9c2e3e..f998080 100755
--- a/spec/unit/indirector/catalog/compiler_spec.rb
+++ b/spec/unit/indirector/catalog/compiler_spec.rb
@@ -167,12 +167,17 @@ describe Puppet::Resource::Catalog::Compiler do
       @compiler.extract_facts_from_request(@request)
     end
 
-    it "should use the Facts class to deserialize the provided facts" do
+    it "should use the Facts class to deserialize the provided facts and update the timestamp" do
       @request.options[:facts_format] = "foo"
       @request.options[:facts] = "bar"
       Puppet::Node::Facts.expects(:convert_from).returns @facts
 
+      @facts.timestamp = Time.parse('2010-11-01')
+      @now = Time.parse('2010-11-02')
+      Time.expects(:now).returns(@now)
+
       @compiler.extract_facts_from_request(@request)
+      @facts.timestamp.should == @now
     end
 
     it "should use the provided fact format" do

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list