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

Max Martin max at puppetlabs.com
Tue May 10 08:17:50 UTC 2011


The following commit has been merged in the experimental branch:
commit 2a2226c0b71aafcda953057d3ecc8df5638447f2
Author: Max Martin <max at puppetlabs.com>
Date:   Thu Apr 21 16:56:03 2011 -0700

    Revert "Fixing Facts pson methods more resilient"
    
    This reverts commit 07a7a68a25eb9b21189751c27f90f972224ea533.
    The JSON patch series has caused problems with the inventory service,
    and further discussion is needed to decide how to serialize objects to
    PSON with regards to future compatibility.
    
    Conflicts:
    
    	spec/unit/node/facts_spec.rb
    
    Paired-with:Matt Robinson <matt at puppetlabs.com>

diff --git a/lib/puppet/node/facts.rb b/lib/puppet/node/facts.rb
index 2ff7156..577b62b 100755
--- a/lib/puppet/node/facts.rb
+++ b/lib/puppet/node/facts.rb
@@ -61,22 +61,18 @@ class Puppet::Node::Facts
 
   def self.from_pson(data)
     result = new(data['name'], data['values'])
-    result.timestamp = Time.parse(data['timestamp']) if data['timestamp']
-    result.expiration = Time.parse(data['expiration']) if data['expiration']
+    result.timestamp = Time.parse(data['timestamp'])
+    result.expiration = Time.parse(data['expiration'])
     result
   end
 
   def to_pson(*args)
-    result = {
-      'document_type' => "Puppet::Node::Facts",
-      'data' => {}
-    }
-
-    result['data']['name'] = name
-    result['data']['expiration'] = expiration if expiration
-    result['data']['timestamp'] = timestamp if timestamp
-    result['data']['values'] = strip_internal
-    result.to_pson(*args)
+    {
+      'expiration' => expiration,
+      'name' => name,
+      'timestamp' => timestamp,
+      'values' => strip_internal,
+    }.to_pson(*args)
   end
 
   # Add internal data to the facts for storage.
diff --git a/spec/unit/node/facts_spec.rb b/spec/unit/node/facts_spec.rb
index 1b6991c..efaa76e 100755
--- a/spec/unit/node/facts_spec.rb
+++ b/spec/unit/node/facts_spec.rb
@@ -110,11 +110,7 @@ describe Puppet::Node::Facts, "when indirecting" do
       end
 
       it "should accept properly formatted pson" do
-        facts = Puppet::Node::Facts.new("foo")
-        facts.values = {"a" => "1", "b" => "2", "c" => "3"}
-        facts.expiration = Time.now
-        #pson = %Q({"document_type": "Puppet::Node::Facts", "data: {"name": "foo", "expiration": "#{@expiration}", "timestamp": "#{@timestamp}", "values": {"a": "1", "b": "2", "c": "3"}}})
-        pson = %Q({"data": {"name":"foo", "expiration":"#{@expiration}", "timestamp": "#{@timestamp}", "values":{"a":"1","b":"2","c":"3"}}, "document_type":"Puppet::Node::Facts"})
+        pson = %Q({"name": "foo", "expiration": "#{@expiration}", "timestamp": "#{@timestamp}", "values": {"a": "1", "b": "2", "c": "3"}})
         format = Puppet::Network::FormatHandler.format('pson')
         facts = format.intern(Puppet::Node::Facts,pson)
         facts.name.should == 'foo'
@@ -126,25 +122,11 @@ describe Puppet::Node::Facts, "when indirecting" do
         Time.stubs(:now).returns(@timestamp)
         facts = Puppet::Node::Facts.new("foo", {'a' => 1, 'b' => 2, 'c' => 3})
         facts.expiration = @expiration
-        facts.to_pson.should == %Q[{"data":{"name":"foo","timestamp":"#{@timestamp}","expiration":"#{@expiration}","values":{"a":1,"b":2,"c":3}},"document_type":"Puppet::Node::Facts"}]
-      end
-
-      it "should not include nil values" do
-        facts = Puppet::Node::Facts.new("foo", {'a' => 1, 'b' => 2, 'c' => 3})
-
-        # XXX:LAK For some reason this is resurrection the full instance, instead
-        # of just returning the hash.  This code works, but I can't figure out what's
-        # going on.
-        newfacts = PSON.parse(facts.to_pson)
-        newfacts.expiration.should be_nil
-      end
-
-      it "should be able to handle nil values" do
-        pson = %Q({"name": "foo", "values": {"a": "1", "b": "2", "c": "3"}})
-        format = Puppet::Network::FormatHandler.format('pson')
-        facts = format.intern(Puppet::Node::Facts,pson)
-        facts.name.should == 'foo'
-        facts.expiration.should be_nil
+        result = PSON.parse(facts.to_pson)
+        result['name'].should == facts.name
+        result['values'].should == facts.values.reject { |key, value| key.to_s =~ /_/ }
+        result['timestamp'].should == facts.timestamp.to_s
+        result['expiration'].should == facts.expiration.to_s
       end
     end
   end

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list